位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 参数和返回值与全局数据

提问人:刘团圆发布时间:2020-12-04

如何通过全局数据以及参数和返回值与函数交换数据。首先分析下面的代码:

class Program 

{

    static void ShowDouble(ref int val)

    {

        val *= 2;

        WriteLine($"val doubled = {val}");

    }

    static void Main(string[] args)

    {

        int val =5;

        WriteLine($"val = {val}");

        ShowDouble(ref val);

        WriteLine($"val = {val}");

    }

}

将上面的代码与下面的代码相比较:

class Program 

{

    static int val; 

    static void ShowDouble()

    {

        val *= 2;

        WriteLine($"val doubled = {val}"};

    }

    static void Main(string[] args)

    {

        val =5?

        WriteLine($"val = {val}");

        ShowDouble ();

        WriteLine($"val = {val}");

    }

}

    这两个ShowDoubleO函数的结果是相同的。

    使用哪种方法并没有什么硬性规定,这两种方法都十分有效,但需要考虑如下一些规则。

    首先,在第一次讨论这个问题时就提到过,使用全局值的ShowDoubleO版本只使用全局变量val。为使用这个版本,必须使用这个全局变量。这会对该函数的灵活性有轻微的限制,如果要存储结果,就必须总是把这个全局变量值复制到其他变量中。另外,全局数据可能在应用程序的其他地方被代码修改,这会导致预料不到的结果(其值可能会改变,等我们认识到这一点时为时已晚)。

    当然,也可以说,这种简化实际上使代码更难理解。显式指定参数可以一眼看出发生了什么改变。例如对于FunctionName(vall,out val2)函数调用,马上就可以知道vail和val2都是要考虑的重要变量,在函数执行完毕后,会为val2赋予一个新值。反之,如果这个函数不带参数,就不能对它处理了什么数据做任何假设。

    总之,可以自由选择使用哪种技术来交换数据。一般情况下,最好使用参数,而不使用全局数据,但有时使用全局数据可能更合适,使用这种技术并没有错。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部