什么是字段?
一般吧类或结构中定义的变量和常量叫字段。
字段分为:静态字段,实例字段,常量字段和只读字段。
常量字段:用const修饰符声明的字段为常量,常量只能在声明中初始化,以后不能再修改。
静态字段:用修饰符static声明的字段为静态字段。不管包含该静态字段的类生成多少个对象或根本无对象,该字段都只有一个实例,静态字段不能被撤销,必须采用如下方法引用静态字段:类名.静态字段名。
实例字段:类中定义的字段不使用修饰符static,该字段为实例字段,每创建该类的一个对象,在对象内创建一个该字段实例,创建它的对象被撤销,该字段对象也被撤销,实例字段采用如下方法引用:实例名.实例字段名。
只读字段:只读字段是特殊的实例字段,它只能在字段声明中或构造函数中重新赋值,在其它任何地方都不能改变只读字段的值
示例:
class Program
{
//常量字段
public const int intMax = int.MaxValue;
//静态字段
public static int cnt = 0;
//实例字段
public int x = 0;
//只读字段
public readonly int y = 0;
public static int aa;
public Program()
{
y = 5000;
}
static void Main(string[] args)
{
Program p1 = new Program();
Program p2 = new Program();
Program.aa = 55;
Console.WriteLine(Program.aa);
Console.WriteLine(Program.intMax);
Console.ReadKey();
}
}
什么是属性?
属性不是字段,本质上是定义修改字段的方法,属性定义了得到和修改相联系的字段的方法。
class Person
{
private string _name = "张三";
private int _age = 12;
public void Display()
{
Console.WriteLine("姓名:{0},年龄:{1}", Name, Age);
}
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Person onPerson = new Person();
onPerson.Name = "张三";
onPerson.Age = 50;
onPerson.Display();
//Console.WriteLine("");
Console.ReadKey();
}
}
虽然属性和字段的使用方法类似,但是属性本质上是方法。因此不能把属性当做变量使用,一下使用变量的地方不能使用属性,例如,不能用属性作为函数的引用参数或输出参数。