属性通过get访问器和set访问器给外部提供对私有字段成员的访问。根据使用情况的不同,可以只提供get访问器或者只提供set访问器。也可以同时提供get服务器和set服务器。get访问器:用于返回字段值。或者用于计算并返回字段值。 用来设置属性的读取权限 Class Student { public string Name { get { return name !=null ?name:string.Empty; } } } set 访问器:类似返回类型为void的方法。它使用称为value的隐式参数,此参数是属性的类型。用了设置属性的写入权限 Class Student { public string Name { set { name=value; } } }
Public class MyClass { public string name{get;set}; public string ID{get;private set}; …… } MyClass m=new MyClass(); Console.WriteLine("Id:{0},Name:{1}",m.ID,m.name);
这很好理解。 C#中,访问字段的话,可以使用语句,比如: class Person { public int ID; } 你可以写: Person p = new Person(); p.ID = 1; 但是调用方法就不同了,比如: class Person { private int _ID; public int get_ID() { return _ID; } public void set_ID(int value) { _ID = value; } } 你就只能写: Person p = new Person(); p.set_ID(1); 注意第二行和前面的不同。 有没有什么办法,可以让我们像使用语句去操作变量一样实现对这个get_xxx和set_xxx函数的调用呢?C#编译器提供了一个叫属性的语法,你可以这么写: class Person { private int _ID; public int ID() { get { return _ID; } set { _ID = value; } } } 这段代码最终会被编译成和前面一个Person定义一样的代码。 但是我们可以使用和最前面那个直接访问字段一样的语句的方式去访问这两个函数。
Class Student
{
public string Name
{
get
{
return name !=null ?name:string.Empty;
}
}
}
set 访问器:类似返回类型为void的方法。它使用称为value的隐式参数,此参数是属性的类型。用了设置属性的写入权限
Class Student
{
public string Name
{
set
{
name=value;
}
}
}
{
public string name{get;set};
public string ID{get;private set};
……
}
MyClass m=new MyClass();
Console.WriteLine("Id:{0},Name:{1}",m.ID,m.name);
C#中,访问字段的话,可以使用语句,比如:
class Person
{
public int ID;
}
你可以写:
Person p = new Person();
p.ID = 1;
但是调用方法就不同了,比如:
class Person
{
private int _ID;
public int get_ID() { return _ID; }
public void set_ID(int value) { _ID = value; }
}
你就只能写:
Person p = new Person();
p.set_ID(1);
注意第二行和前面的不同。
有没有什么办法,可以让我们像使用语句去操作变量一样实现对这个get_xxx和set_xxx函数的调用呢?C#编译器提供了一个叫属性的语法,你可以这么写:
class Person
{
private int _ID;
public int ID()
{
get { return _ID; }
set { _ID = value; }
}
}
这段代码最终会被编译成和前面一个Person定义一样的代码。
但是我们可以使用和最前面那个直接访问字段一样的语句的方式去访问这两个函数。
public [type] XXX
{
get;set;
} 这应该算是语法糖?使用上更方便了
obj.XXX 这是Get
obj.XXX=x 这是Set实际上可能内部还是类似传统那样吧。
class Person
{
private int _ID;
public int get_ID() { return _ID; }
public void set_ID(int value) { _ID = value; }
}
将内部状态 _ID 隐藏起来,你需要通过 get_ID 和 set_ID 两个方法才能访问。至于使用属性,则是把这个代码简化了。
我在这里看到的啊