using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program{ static int val; //函数 //1. 关键字static:静态函数,void:无返回值,return:程序立即返回调用代码; //实例1: 函数参数 static double product(double param1, double param2){ return param1 * param2;} //实例2: 参数数组 static int Add(params int[] p){ int sum = 0; foreach (int i in p) sum += i; return sum;} //实例3: 值传递函数,结果不改变 static void ShowDoulbe(int val){ val *= 2; Console.WriteLine("val doubled ={0}", val);} //实例4: 无参函数,结果改变 static void ShowDoulbe(){ val *= 2; Console.WriteLine("val doubled ={0}", val);} //实例5: 引用传递函数,结果改变 static void ShowDoulbe(ref int val){ val *= 2; Console.WriteLine("val doubled ={0}", val);} //实例6: 输出函数 static void outfun(out string str){ str = "test"; str += "fun"; Console.WriteLine("outfun result: {0}", str);} static void Main(string[] args){ //调用函数参数 Console.WriteLine("Call func parameter;"); double a = product(1.2, 2.1); Console.WriteLine(a); //调用参数数组 Console.WriteLine("Call parameter array;"); int sum = Add(1, 3, 5, 7); Console.WriteLine(sum); //调用无参函数,结果改变 Console.WriteLine("Call non-parameter func;"); val = 5; Console.WriteLine("Befor the call;"); Console.WriteLine("myNumber={0}", val); Console.WriteLine("After the call;"); ShowDoulbe(); Console.WriteLine("myNumber={0}", val); //调用值传递函数,结果不改变 Console.WriteLine("Call value-passed func;"); int myNumber = 5; Console.WriteLine("Befor the call;"); Console.WriteLine("myNumber={0}", myNumber); Console.WriteLine("After the call;"); ShowDoulbe(myNumber); Console.WriteLine("myNumber={0}", myNumber); //调用引用传递函数,结果改变 Console.WriteLine("Call reference-passed func;"); int myNumber2 = 5; Console.WriteLine("Befor the call;"); Console.WriteLine("myNumber={0}", myNumber2); Console.WriteLine("After the call;"); ShowDoulbe(ref myNumber2); Console.WriteLine("myNumber={0}", myNumber2); //调用输出函数 Console.WriteLine("Call out parameter function;"); string test2; outfun(out test2); Console.ReadLine();}}}
引用类型和值类型
数据根据变量的类型以两种方式中的一种存储在一个变量中。
值类型,在内存的一个地方存储它们自己和它们的内容。Int 变量等,总是包含一个值。
使用空类型(泛型中的一种形式)创建一个值类型。
引用类型,存储指向内存中其他某个位置(堆)的引用,在另一个位置存储内容。包括String变量,数组类型,object,每个类。可以存储Null,表示它不包含值。