1、方法
(1)方法的声明:
方法的定义包括任意方法修饰符(如方法的可访问性)、返回值的类型,然后依次是方法名和输入参数列表和方法体
【modifiers】 return_type MethodName([paramaters])
{
// Method body
}
(2)调用方法
(3)给方法传递参数
参数可以通过引用或值传递给方法。对于复杂的数据类型,按引用传递的效率更高,因为在按照值传递时,必须复制大量的数据。在通过引用传递时,该方法对变量进行的改变在方法退出后仍旧有效;而通过值传递给方法,在方法退出后,对变量的修改会丢失。
(4)ref 参数:迫使参数通过引用传递给方法
(5)out参数
参数加上out前缀时,变量可以不初始化。
(6)命名参数
参数一般需要按照定义的顺序传递给方法。命名参数允许按任意顺序传递。
如:
法 :
string FullName〈 string firstName` string △astName) ·
(
return firstName + " " + lastName;
)
下面的方法调用会返回相同的全名:
FullName("John", "Doe");·
FullName(lastName: "Doe", firstName: "John") ;
(7)可选参数
必须为可选参数提供默认值,可选参数必须出现在所有必选参数之后。
如下是不对的
public static void testFanxing(int b = 0, int a, int c = 0)
{
Console.Write(a + b + c);
}
(8)方法重载
方法有不同的签名(即,方法名相同,但参数个数或类型不同)。
C#在重载方法的参数方面有一些小限制 :
两个方法不能仅在返回类型上有区别。
两个方法不能仅根据参数声明是ref 还是out来区别。
2、属性:它是一个或一对方法,在客户端代码看来,它(们)是一个字段。
(1)只读和只写属性
private string name;
publit string Name
{
get{ return Name;}
}
(2)属性的访问修饰符
在下面的代码示例中,注意 set
访问器有一个私有访问修饰符,而 gct访 问器没有任何访问修饰符。这表示 get访 问器具有属性的访问级别。 在 get和 set 访问器中,必须有一个具备属性的访问级别。 如果 get访 问器的访问级别是
protected,就 会产生一个编译错误,因 为这会使两个访问器的访问级别都不是属性。
public string Name
{
get{
return name;
}
private set{
name = value;
}
}
(3)自动实现的属性
public int Age{get;set;} 不需要声明private int age.编译器会自动创建它。
(4)内联
3、构造函数