
关于函数的传参其中的参数位置不能变。
函数中传参也可以定义为采用关键字params数组,在调用时
函数时只需要传入数组类型的参数即可,并不要传入一个数组,如下:
Static int SumVals(params int[] vals) //定义函数
{
Int sum=0;
Foreach(int val in vals){
Sum+=val;
}
Return sum;
}
//调用函数
Int sum=SumVals(1,2,3,4,5,7)
在函数调用时,传进去的参数在函数体内进行一定 *** 作后并不会改变原来的值,如果我们想要一个参数传进去进行 *** 作后的出的结果跟着发生变换,当个的话以返回值赋值就行,要是需要每次传参,参数多要变化,就可以使用ref关键字指定参数,如下:
Static void ShowDouble(ref int val){
Var*=2;
}
调用函数:
Int myNumber =5;
WriteLine($”mynumber = {myNumber}”);
ShowDouble(ref myNumber);
WriteLine($”mynumber = {myNumber}”);
输出结果是 5
10
也可以将ref作为返回值类型,如下:
Static ref int ShowDouble(int val)
{
Val*=2;
Return Ref int Val;
}
调用函数:
Int myNumber =5;
WriteLine($”mynumber = {myNumber}”);
ShowDouble(ref myNumber);
WriteLine($”mynumber = {myNumber}”);
输出结果是 5
10
String,Arrays这样的变量是引用数据类型,在没有参数声明的情况下,可以使用ref来获取arrays,如下:
Static ref int ReturnByRef()
{
Int array={2,1};
Return ref array[0];
}
注意:虽然strings是引用类型,但属于特例,因为他们是不可改变的,修改他们会产生新的string,原有的string则会被解除分配。如果试图使用ref来返回string,编译器就会报Roslyn错.
输出参数: 除了按引用传值以外,还可以采用关键字out
,out与ref关键字的使用几乎一样,但它们有两点不同:
。把未赋值的变量用作ref参数是非法的,但用作out参数是可以的
。在函数使用out参数时,必须把它看成尚未赋值
下面关于out参数的使用:
public static int MaxValue(int[] Array, out int MaxIndex)
{
int MaxValue = Array[0];
MaxIndex = 0;
for (int i = 1; i < Array.Length; i++)
{
if (Array[i] > MaxValue)
{
MaxValue = Array[i];
MaxIndex = i;
}
}
return MaxValue;
}
static void Main(string[] args)
{
int[] array = { 1, 2, 4, 6, 8, 9, 0 };
Console.WriteLine(MaxValue(array, out int MaxIndex));
Console.WriteLine(MaxIndex);
}
输出结果是:9 5
当局部变量与全局变量有冲突的时候函数还要去调用全局变量的话即可采用 类名.全局变量名
Int i;
String text;
For(int i=0;i<10;i++){
Text =$”{Conver.Tostring(i)}”
WriterLine($”{Text}”);
}
WriterLine($”{text}”);
上段代码运行之后会报错,原因是使用了未赋值的变量,
text只在for循环中初始化了,再循环后退出去后就丢失了
进行下面调整就行:
Int i;
String text=“”;
For(int i=0;i<10;i++){
Text =$”{Conver.Tostring(i)}”
WriterLine($”{Text}”);
}
WriterLine($”{text}”);
本身text初始值是空字符串,在显示时空字符串没有了
Main()函数:
这个函数可以返回Void或int,有一个可选的参数string[] args。
Main()函数可以使用一下几种版本:
Static void Main()
Static void Main(string[] args)
Static int Main()
Static int Main(string[] args)
关于后两个常用于表示应用程序终止的方式,返回值为0表示程序正常终止。关于args参数提供的一种从应用程序的外部获取信息的方式这些信息在运行应用程序时以命令行参数的形式指定。
委托(delegate):
委托是一种储存函数的引用的类型,委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字,委托的声明指定了一个返回值,参数列表。
定义了委托就后可以定义其变量,这个引用变量创建后可以在委托的构造函数中将要指定实施的函数当做参数放进去,其实它的实例后的引用更像是一个指针指向传入函数的内存,这样你可以在开始时并不要去知道要执行的函数,代码如下:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)