C#3.0+中属性和字段的区别我意识到这似乎是在C#中,字段和属性之间有什么区别?但我的问题略有不同(在我看来):一旦我知道我将不使用我的类与“只在属性上工作的技术”和我不会在getter/setter中使用验证代码。有什么不同(除了样式/未来的开发),比如设置属性的某种类型的控件?在以下几个方面是否有其他区别:public string MyString { get; set; }和public string myString;(我知道,第一个版本需要C#3.0或更高版本,编译器确实创建了私有字段。)
3 回答
aluckdog
TA贡献1847条经验 获得超7个赞
编辑:
Cats萌萌
TA贡献1805条经验 获得超9个赞
字段可用作 out/ref
争论。属性不能。 一个字段在多次调用时总是会产生相同的结果(如果我们忽略了多个线程的问题)。财产,如 DateTime.Now
并不总是等于自己。 属性可能抛出异常-字段永远不会这样做。 属性可能有副作用,或者需要很长时间才能执行。字段没有副作用,对于给定的类型,速度总是与预期的一样快。 属性支持getter/setters的不同可访问性-字段不支持(但可以创建字段)。 readonly
)当使用反射时,属性和字段被视为不同 MemberTypes
所以它们的位置不同 GetFields
VS GetProperties
例如) 与字段访问相比,JIT编译器可能对属性访问有很大不同。不过,它可以编译成相同的本机代码,但差异的范围是存在的。
- 3 回答
- 0 关注
- 619 浏览
添加回答
举报
0/150
提交
取消