一个静态方法属于类本身,而不属于那个类的一个对象。要想调用一个被定义为static的方法,必须在他前面加上这个类的名称。
想要调用一个没有被定义为static的方法,必须在他前面加上一个对象(在其中定义哪个方法的一实例)的名
这种区别也适用于类中的数据成员。如:数据类型的MinValue与MaxValue都是静态字段
一个静态方法不能调用类中的任何非静态方法,也不能使用任何非静态字段。那是因为非静态字段对类的不同实例是不同的,并且非静态方法对类的不同实例返回不同的值。
2.获取和设置属性
如何在C#中使用get及set方法定义属性
1、属性的定义:定义一个public变量,在这个变量中含有get/set方法,即为属性。
2、定义属性的作用,可以保护变量,在使用属性时,可以通过其set或get方法对属性值进行检测,保证值合法。
3、下文举例说明属性的定义方法。
namespace Program
{
class person
{
private int age;
public int Age;
{
get { return age;}
set { age = value;}
}
}
}
a)上例中,为私有字段age定义名为Age的公有属性,一般字段用小写,且必须是私有的,属性名和字段名相同,首字母大写,且必须是公有的;
b)当对属性Age赋值时,会自动调用set方法,当对Age进行取值时,会自动调用get方法;
c);当用户赋值或取值时,可以在set或get方法中进行检测,保证赋的值或取的值绝对合法;如若要求age>=0,则可在以上的set方法中添加以下检测:
set
{
If ( value > 0 )
{
age = value;
}
else
{
age = 0;
}
}
d)当不对属性值进行任何处理,则直接在get{}和set{}中对字段进行赋值和取值,此时,可使用快捷方式生成属性,即,光标置于需要定义属性的字段,右键--->重构--->封装,则自动生成属性。
注意:允许外部访问的变量一定要声明为属性。
属性可分为:可读写、只读、只写三种类型,其中,可读写既有set方法,又有get方法;只读只有get方法;只写只有set方法。
get存取程序总是包含一个return语句,他向使用该属性的程序返回一个值
类中的变量默认为private型
也可以将一些简单的方法改成变量形式,例子:
public int DayOfYear //将DayOfYear 定义为只读属性
{
get
{
return XXXX;
}
}
当子类使用的是默认构造函数时,不需要显示的定义。因为他所有的父类都使用默认构造函数。
非默认构造函数还需要显示的调用基类中的构造函数。
class DatePlus(int year,int month ,int day):base(year,month,day)
4.重载操作符
public static int operator - (DatePlus date1,DatePlus date2)
{
return date1.DaysSince1600-date2.DaysSince1600;
}
重载运算符(-)
5.virtual与override
被定义为virtual的方法的目地是被从这个类派生的类覆盖。一个覆盖虚方法的方法使用override修饰符致命他想要使用自己的版本替换一个方法。override修饰符是必须的,这样就不会在违背自己意愿的情况下意外覆盖一个虚方法。
类也可以覆盖一个没有被定义为virtual的方法,在这种情况下,新方法必须包含修饰符new