浅谈C# Main方法传递参数的方式
Visual C# Main方法的传参是什么情况呢?我们在学习C#的时候这是最基础的问题,那么我们来看看具体的内容是什么?C# Main方法传参的问题到底是什么,希望对你学习C#有所帮助。
每个C#应用程序都必须包含一个Main方法,以指定从哪里开始执行程序。在C#中,Main的首字母大写,而Java 使用小写的 main。
C# Main方法只能返回 int 或 void,并有一个代表命令行参数的可选字符串数组参数:
static int Main(string[] args) { //... return 0; }
对于包含任何传入的命令行参数的字符串数组参数,其工作方式与在 Java 中的工作方式相同。因此,args[0] 指定第一个命令行参数,args[1] 表示第二个参数,依此类推。与 C++ 不同,args 数组不包含 EXE 文件名称。
C# Main方法的传参之其他方法
向某个方法传递参数时,可以通过值或通过引用传递参数。值参数简单地采用任意变量的值,在方法中使用。因此,调用代码中的变量值不受对方法内的参数所执行的操作的影响。
而引用参数指向在调用代码中声明的变量,因此,通过引用传递时方法将修改此变量的内容。
通过引用传递
在 Java 和 C# 中,引用某个对象的方法参数总是通过引用传递,而基元数据类型参数则通过值传递。
在 C#中,所有参数在默认情况下均通过值传递。若要通过引用传递,您需要指定关键字 ref 或 out。这两个关键字的区别在于参数初始化的不同。ref 参数必须在使用前进行初始化,而 out 参数不必在传递前进行显式初始化,并且它将忽略以前的任何值。
C# Main方法的传参之ref关键字
如果想让被调用方法永久更改用作参数的变量的值时,请在参数中指定 ref 关键字。这种做法传递的不是调用中所使用的变量的值,而是对此变量本身的引用。方法随后会处理此引用,因此在方法执行期间对此参数所做的更改将保存到用作此方法的参数的原始变量中。
下面的代码在 Add 方法中演示了此功能,其中的第二个 int 参数就是使用 ref 关键字通过引用传递的:
class TestRef { private static void Add(int i, ref int result) { result += i; return; } static void Main() { int total = 20; System.Console.WriteLine( "Original value of 'total': {0}", total); Add(10, ref total); System.Console.WriteLine( "Value after calling Add(): {0}", total); } }
此示例很简单,其输出表明对结果参数所做的更改已在 Add 方法调用所使用的 total 变量中体现出来:
Original value of 'total': 20 Value after calling Add(): 30
这是因为结果参数引用了调用代码中 total 变量所占用的实际内存位置。类的属性不是变量,因此不能直接用作 ref 参数。
调用方法时,ref 关键字必须位于参数前面,并且必须位于方法声明之中。
C# Main方法的传参之out关键字
out关键字的作用与 ref 关键字非常相似,并且对使用 out 关键字声明的参数所做的更改将在方法之外体现出来。out 关键字与 ref 关键字有两点不同:
(1) 方法中将忽略 out 参数的任何初始值;
(2) 必须在方法调用过程中为 out 参数赋值:
class TestOut { private static void Add(int i, int j, out int result) { // The following line would cause a compile error: // System.Console.WriteLine( "Initial value inside method: {0}", result); result = i + j; return; } static void Main() { int total = 20; System.Console.WriteLine( "Original value of 'total': {0}", total); Add(33, 77, out total); System.Console.WriteLine( "Value after calling Add(): {0}", total); } }
在此示例中,Add 方法的第三个参数就是使用 out 关键字进行声明的,并且在调用此方法时还需要对该参数使用 out 关键字。输出将为:
Original value of 'total': 20 Value after calling Add(): 110