返回信息流在微软提供的System.Windows.Forms.Controls源代码里可以看到这样的代码
//
// Summary:
// Gets the distance, in pixels, between the bottom edge of the control and
// the top edge of its container's client area.
//
// Returns:
// An System.Int32 representing the distance, in pixels, between the bottom
// edge of the control and the top edge of its container's client area.
[EditorBrowsable(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public int Bottom { get; }
这是不是自动属性?,如果是的话,什么Bottom只有get属性,而没有set属性,
因为我做了下尝试,自动属性只有get属性而没有set属性的话编译时通不过。。。
请求大牛解答
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3777同步于 2012/6/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
求助一个源码中关于自动属性的问题
zuobupt
2012/6/7镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 zuobupt 的大作中提到: 】
: 在微软提供的System.Windows.Forms.Controls源代码里可以看到这样的代码
: //
: // Summary:
: ...................
你看的不是源代码
要看源代码请去下SSCLI
【 在 dao 的大作中提到: 】
: 从这段代码可以看出,Bottom属性显然是只读属性,非自动属性。
: 自动属性的含义是,当getter、setter中无逻辑时,处于保护private变量和简化编码两点考虑,出现的一种语法。经过编译器处理后,会自动生成一个相应类型的private变量。
: 另外,这种Form的可写属性,都包含逻辑(起码把赋值操作和界面显示关联起来,比如给Form.Width赋值就能改变实际Form宽度),自动属性无法满足需求。
额,关键是---
如果我自定义一个类,在类里写上这么一句 public int Bottom { get; }
那么编译是通不过的,,
我不明白就是微软给的这个东西编译怎么就能通过,只读属性是需要相应的实际代码体的。。。
.NET 3.5 以上才支持
【 在 zuobupt 的大作中提到: 】
: 额,关键是---
: 如果我自定义一个类,在类里写上这么一句 public int Bottom { get; }
: 那么编译是通不过的,,
: ...................
【 在 ahomer 的大作中提到: 】
: .NET 3.5 以上才支持
请问包括.net 3.5吗?
我目前用的是.net 3.5.。。貌似不支持。。。
到了08以后这样的代码一般是不让编译通过的,具体我不知道在哪里看到了,不过了我可以告诉你怎么改就可以通编译
public int Bottom { get; private set;} 就可以;
还有不知道你去哪里整来的代码,感觉不是微软提供的,微软提供的代码都是经过测试的,不至于这样.至少我用到的都是直接通过编译的