c#中函数的形参
c#中函数的形参分为4种类型:
1 值类型
2 引⽤类型
3 数组类型 :不定长参数问题的解决⽅案
4 out类型:多个返回值问题的解决⽅案
值类型的参数在调⽤的函数中新开辟了⼀个参数的内存空间
C#的值类型包括:结构体(数值类型,bool型,⽤户定义的结构体),枚举,可空类型。
public class Compute
{
public void Add(int i)
{
i++;
}
}
class Program
{
static void Main(string[] args)
{
int i = 0;
Compute objCompute = new Compute();
objCompute.Add(i);
Console.WriteLine(i);
}
}
output:0
引⽤类型:引⽤型参数和值参数不同,引⽤型参数并不会开辟新的内存区域。传递的是内存地址的⼀份拷贝,因此都是操作相同的数据空间。
C#的引⽤类型包括:数组,⽤户定义的类、接⼝、委托,object,字符串
引⽤型参数⼀般是在以下两种情况下存在1)⽅法的形参本⾝就是引⽤类型
2)通过声明ref关键字的参数是按引⽤传递
{
public void Add(ref int i)
{writeline函数
i++;
}
}
class Program
{
//本类演⽰引⽤类型的参数
static void Main(string[] args)
{
int i = 0;
Compute objCompute = new Compute();
objCompute.Add(ref i);
Console.WriteLine(i);
}
}
output:1
return i,j;⾮法的,只能返回⼀个结果
out类型,输出类型的出现是⾼⼀级的return,它解决了返回多个参数的问题。
public void Add(out int i,out int j)//与引⽤类型的参数类似,输出类型的参数也不会开辟新的内存空间,即在调⽤的函数中操作参数本⾝。
{
i = 0;
i++;
j = 0;
j++;
}
}
class Program
{
static void Main(string[] args)
{
int i;
int j; // 注意out类型的参数不需要初始化即可使⽤
Compute objCompute = new Compute();
objCompute.Add(out i,out j); // 注意out类型的参数不需要初始化即可使⽤
Console.WriteLine("i={0},j={1}",i,j);
}
}
output:i=1,j=1
数组类型的参数:原来我现在才发现,我⼀直把数组类型潜意识默认为基本类型的数据组。并不是这样的!数组可以存储任何类型的数据!诸看官有则改之,⽆则加冕
数组类型的参数实际上是解决了不定长参数的问题。
public void Add(params int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i]++;
}
}
public void AddToo(params int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i]++;
Console.WriteLine(arr[i]);
}
}
}
class MultiParam
{
//本类演⽰不定长参数的解决⽅案。不要把⽬光局限于基本类型的数据。 static void Main(string[] args)
{
Compute objCompute = new Compute();
//⽅法⼀:把不定长参数封装在⼀个数组中,传递数组的索引
int[] arr = { 1, 2, 3 };
objCompute.Add(arr);
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
//⽅法⼆:直接传递不定长参数
objCompute.AddToo(1, 2, 3, 4);
}
}
output:
2
3
4
2
3
4
5
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论