+ -
当前位置:首页 → 问答吧 → 【C# .NET3.5】 set、get属性自动实现问题

【C# .NET3.5】 set、get属性自动实现问题

时间:2011-12-08

来源:互联网

在C#高级编程中看到,在类中如果声明:
Class A{
...
public string Name{set;get;}
...
}

则属性自动实现,而且不需要声明private string name,编译器会自动创建这个变量;


但是我这样做以后查看类图,在这个类里只有公有的属性Name,没有私有成员变量,这是为什么呢?

如果它生成了私有成员变量,那名字是什么呢?name? 还是Name?

作者: itaratss   发布时间: 2011-12-08

注意 编译器会自动创建这个变量

所以是编译后才会创建 是在IL中有

作者: Sandy945   发布时间: 2011-12-08

另外,“public string Name{set;get;}” 
这里的public是不是只限定Name属性是公有的,如果缺省的话Name属性就是私有的?

后面的{set;get;}里如果省略“private"则默认set和get都是公有的?

书里说,“get和set必须有一个具备属性的访问级别,如果get访问器级别设为protected就会报错,因为这会使两个访问器的访问级别都不是属性”,这段话是什么意思?

作者: itaratss   发布时间: 2011-12-08

引用 1 楼 sandy945 的回复:
注意 编译器会自动创建这个变量

所以是编译后才会创建 是在IL中有


我编译了以后仍然没有Age字段

作者: itaratss   发布时间: 2011-12-08

你上面没有Age字段啊.

作者: kkbac   发布时间: 2011-12-08

都说了IL中才有嘛,使用IL反汇编程序查看。

作者: qwertxp   发布时间: 2011-12-08

代码中是不会有的,提示中也不会有.如果你还打算用私有字段的话只好自己加了.

作者: cnwin   发布时间: 2011-12-08

引用 6 楼 cnwin 的回复:

代码中是不会有的,提示中也不会有.如果你还打算用私有字段的话只好自己加了.


那一般在代码中,都不设私有字段直接用属性就好?

作者: itaratss   发布时间: 2011-12-08

引用 5 楼 qwertxp 的回复:

都说了IL中才有嘛,使用IL反汇编程序查看。


所以呢?

作者: itaratss   发布时间: 2011-12-08

uuuuuuuuuuuuuuuuuuuuuuuuup

作者: itaratss   发布时间: 2011-12-13