属性访问器
- 一般情况下,字段都会被设置为private(私有),外界如果想访问时,快捷设置字段的访问方式,只读or只写or可读可写,就可以使用到属性,或称属性访问器
public class People
{
private string name;
public string name
{
//get访问器用于读取字段,若属性内没有get访问器,则被认为是不可读的
get{return name;}
//set访问器用于写入字段,若属性内没有set访问器,则被认为是不可写的
set{name = value}
//value被视为写入的数值,如name = "xiaoming"
}
}
- 也可使用private标记外界是否可以访问,从而设置为外界只读或只写,后期也可以使用其他属性访问修饰符,如protected
//外界只读
public string name
{
get{return name;}
private set{name = value}
}
- 属性的快捷写法:public int Age { get; set; } ,这种写法可以先前不定义字段,因为编译器会自动帮你生成一个字段
- 在属性访问器内写代码,Get访问器内不要写读取该属性的语句,Set访问器内不要写写⼊该属性的语句,否则,会出现递归循环,死循环
方法参数
一、形参与实参
- 形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数
- 实参,全称为”实际参数”,是在调用时传递给函数的参数,即传递给被调用函数的值,实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值
//类中定义一个交换方法
public void Swap(int x, int y)//x,y为形参
{
int temp = x;
x = y;
y = temp;
}
//主函数调用
MathTool myMath = new MathTool();
int a = 10;
int b = 20;
myMath.Swap(a,b);//实参
二、引用参数ref
MathTool myMath = new MathTool();
int a = 10;
int b = 20;
myMath.Swap(a,b);
Console.WriteLine(a);
Console.WriteLine(b);
- 上面的代码执行后输出的a和b值并没有发生变化,因为a和b只是相当于把值赋给了x和y,他们本身并没有发生变化,所以此时用引用参数ref很方便
public void Swap(ref int x, ref int y)
{
int temp = x;
x = y;
y = temp;
}
//调用
myMath.Swap(ref a,ref b);
- 此时再执行语句,a和b就会交换值,因为此时传递的就不是值了,而是a和b的地址
- 如果没有赋初值的话,是没有地址的,所以ref参数一定是个变量,实参⼀定是赋过初值的
- ref⼀般加在值类型参数的前⾯
三、输出参数out
- 当一个方法想返回多个结果时可用输出参数out
//在类中定义方法
public void Cal(int a,int b,out int r1,out int r2)
{
r1 = a + b;
r2 = a - b;
}
//主函数中调用
MathTool ml = new MathTool();
int result1;
int result2;
ml.Cal(3, 5, out result1, out result2);
//result1为8,result2为-2
- 添加了out关键词的参数会成为⼀个输出的通道
- 离开⽅法之前形参必须赋值
- 实参必须是⼀个变量
- 传递的实参⼀般是值类型
- 使⽤输出参数,⽆论是形参还是实参前⾯都要加out关键词
四、数组参数parmas
- 当传入的参数,不确定是几个时可以用数组参数parmas
public void Sum(params int[] a)
{
int result = 0;
foreach (int x in a)
{
result += x;
}
Console.WriteLine("结果为: " + result);
}
myMath.Sum(1, 2, 3, 4, 5);
- 数组参数只能使用一次,而且要放到参数列表的最后
五、默认值参数
- 当一个参数大部分情况都是一个值时,可添加默认值参数
/// <summary>
/// 获取你的年级
/// </summary>
/// <returns>返回你的年级.</returns>
/// <param name="yourAge">你的年龄.</param>
/// <param name="jumpCount">跳过几级.</param>
public int GetYourGrade(int yourAge, int jumpCount = 0)
{
int grade = yourAge - 6 + jumpCount;
grade = grade > 0 && grade < 13 ? grade : -1;
return grade;
}
版权声明:本文为weixin_43914767原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。