字段
字段的定义由三部分组成-访问修饰符,字段的类型和字段名称,下面的代码给出了字段的定义方法。
public class Person{
private string name;
public int age;
protected bool sex;
}
可以使用关键字readonly或const来定义字段。若使用readonly,
表示该字段是只读的,若使用const,表示该字段是不可变的。
public class Person{
private readonly string name;
public const int age=18;
protected bool sex;
}
若使用readonly,则不需要在定义的时候初始化,而是可以在构造函数里面完成初始化,若使用const修饰,如果没有在定义字段时初始化,就会产生编译错误。
也可以使用static关键字来声明静态字段。静态字段与实例字段的区别是静态字段必须通过类来访问,而实例字段则需要通过类的对象实例进行访问。
public class Person{
public static string name;
public int age;
}
以上定义的静态字段name只能通过类名,即Person.name的方式进行访问;而对于实例字段age,应该通过类的实例对象,即new Person().age的方式进行访问。
属性
属性是对字段的扩展。根据面向对象的基本思想,字段最好设置为private,因为这样可以防止客户端直接对字段进行修改,从而保证内部成员的完整性。为了访问类的私有字段,提供了属性机制。
public class Person{
private string name;
public string Name {
get { return name; }
set { name = value; }
}
}
通过属性来访问字段,避免了调用方法。
当属性仅含有get访问器,或者set访问器为private级别时,这样的属性称之为只读属性;当属性仅包含set访问器,或者get访问器为private级别时,称之为只写属性。只读属性和只写属性的定义如下所示:
public class Person{
private string name;
private int age;
private bool sex;
public string Name {
get { return name; }
}
public int Age {
set { age = value; }
}
public bool Sex {
get { return sex; }
set { sex = value; }
}
}
属性能够直接访问私有字段之外,还可以加入自己的逻辑
代码。
和静态字段类似,属性也可以通过static关键字声明为静态属性,不能在静态属性中使用非静态字段。
private static string name;
public static string Name {
get { return name; }
}
方法
方法也就是函数,C#支持方法重载,方法重载指在类中可以定义多个名称相同但是参数顺序,参数类型,参数个数不同,返回类型不属于方法签名的一部分。
public class jisuanji {
public void print(string s) {
Console.WriteLine(“s”);
}
public void print(int i) {
Console.WriteLine(i);
}
public void print(int i, string s) {
Console.WriteLine(“i是:{0},s是:{1}”,i,s);
}
}
class Program
{ static void Main(string[] args)
{
jisuanji s = new jisuanji();
s.print(“张三”);
s.print(18);
s.print(18,“张三”);
}
}