引用传参:
引用变量放进函数中会改变传入的argument
通过以下代码认识到引用变量是否以引用形式传入函数所导致的区别
如果打印地址,会发现值参数只是创建了一个新的引用变量指向同一段地址(副本)
而引用参数则代表你用的该变量和实参是同一个家伙
所以 new 之后的结果不一样
public void test()
{
int x = 10;
ChangeInt(ref x);
Demo_18_Student demo_18_Student = new Demo_18_Student();
Console.WriteLine(demo_18_Student.Age);//10
ChangeStudent_ref(ref demo_18_Student);
Console.WriteLine(demo_18_Student.Age);//15
ChangeStudent(demo_18_Student);
Console.WriteLine(demo_18_Student.Age);//15
}
static void ChangeInt(ref int x)
{
x++;
}
static void ChangeStudent_ref(ref Demo_18_Student demo_18_Student)
{
demo_18_Student = new Demo_18_Student(15);
Console.WriteLine(demo_18_Student.Age);//15
}
static void ChangeStudent(Demo_18_Student demo_18_Student)
{
demo_18_Student = new Demo_18_Student(20);
Console.WriteLine(demo_18_Student.Age);//20
}
输出形参:
相当于表明了该函数具有副作用
使用“out”关键词形容
具体原理是,创建一份副本,指向同一段地址
函数/方法 必须要对输出参数进行赋值
数组参数params:
● 必需是形参列表中的最后一个,由 params 修饰
● 举列:String.Format 方法和 String.Split 方法
class Demo_Params
{
public static void test()
{
int result = CalculateSum(1, 2, 3);
Console.WriteLine(result);
}
static int CalculateSum(params int[] intArray)//必须作为最后一个参数
{
int sum = 0;
foreach (var item in intArray)
{
sum += item;
}
return sum;
}
}
具名参数:
● 提高代码可读性
● 参数的位置不在受参数列表约束
具体就不示例了
可选参数:
参数因为带默认值而变得可选
可选参数必须跟在必须参数之后
扩展参数:
扩展方法必须在非泛型静态类中声明