C#属性访问器、形参与实参、引用参数ref、输出参数out、数组参数parmas和默认值参数学习

Source

属性访问器

  • 一般情况下,字段都会被设置为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 = 10int b = 20;
myMath.Swap(a,b);//实参

二、引用参数ref

MathTool myMath = new MathTool();
int a = 10int 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;
} 
发布了11 篇原创文章 · 获赞 1 · 访问量 431