有人可以告诉我,什么是使用公共财产为私人类成员,但没有实现任何设置和获得部分?我知道这可能只是为示例,并且以后可以实现的东西,但我不知道是否有使用它就像空集的财产目的得到
回答
我打算假设您知道有一个由C#编译器生成的专用字段,作为备份此属性的字段。它是句法糖。我也会假设你知道这是一个自动实施的属性。那么,如果在get
或set
中公开没有逻辑的财产,那么它又有什么意义呢?换句话说,任何类都可以访问它并设置它的值。那么为什么选择这个属性在公共领域?
它的宗旨是:
- 今天
get
和set
是空的,但它可能需要在未来的代码。为避免将来违约,请使用空的get
和set
。 - 大多数.NET数据绑定都可以针对属性而不是字段来完成。所以尽管它是空的,它仍然有更大的目的。
get
和set
可以具有访问修饰符。例如,您可以说set
是私人的,但get
是公开的。- 一个字段不能在接口中使用,但属性可以。
这正是我所期待的,谢谢您! – wookiee
当你看到
public int Count { get; set; }
为成员的任何意义一类,即不是什么都没有。你只是推迟到自动属性的默认实现。这大概,
private int _count;
public int get__Count()
{
return _count;
}
public void set__Count(int value)
{
_count = value;
}
你只需语法糖在C#中使用这些方法大致是这样一个领域,即
instanceOfObject.Count = 42; // Not a field access, but behind the scenes a method call.
这个问题肯定有重复,我确定你是一个成熟的SO用户,并在试图为你篡夺任何积分之前进行过搜索 –
@Mic halHainc这是一个公平的意见。如果您认为我的回答没有用处,或者对Stack Overflow无贡献,欢迎您投票。 – jdphenix
不,我不想这么说,我只是喜欢DRY的原则...并且不喜欢重复的东西,您的意愿可以帮助开发人员仍然感激尽管 –
这是在C#中的“自动执行”属性。实际上,房地产作为一个完整的财产,即:
此:
public int Number { get; set; }
等同于:
private int _number;
public int Number
{
get
{
return this._number;
}
set
{
this._number = value;
}
}
这可以防止不必键入出完整的财产申报。当你在getter和/或setter中没有任何额外的逻辑时,这很有用。
例如,在进行简单的数据检索时,我经常使用自动实现的属性,并发现它们使我的类更加简洁。
- 1. 获得的财产
- 2. 没有得到SendEmail财产
- 3. 得到唱段,valuenow财产
- 4. umbracoFile财产空
- 5. 获得财产 - Java的
- 6. 获取财产的财产
- 7. 得到从类获取财产型号
- 8. 境界RealmCollectionChange得到改变财产
- 9. INotifyPropertyChanged财产财产
- 10. 通知一个集合内的项目的财产变化
- 11. Grails的获得财产的名称
- 12. 的财产语义转发到复制的财产在Objective-C
- 13. 如何获得财产iPOJO
- 14. 使用LINQ获得财产
- 15. 无法获得checkbox.checked财产
- 16. 检查枚举财产空
- 17. 绑定到财产的ItemsSource
- 18. 绑定Checkbox.Checked财产财产上的DataSet
- 19. NHibernate的集引用财产编号
- 20. 由协会的财产订购集合
- 21. 无法获得财产的剃刀foreach
- 22. AJAX无法获得财产的childNodes
- 23. 试图获得非对象的财产
- 24. Laravel - 如何获得日期的财产
- 25. 我班的私有财产是空
- 26. 错误:无法读取空的财产
- 27. - (空)dealloc的财产(非原子,保留)
- 28. 绑定到财产
- 29. 找不到财产
- 30. 找不到财产
这可能是一个自动实施的属性。取决于你的意思是空的,而不管它是VB还是C# – Plutonix
你是指自动属性?即public int Foo {get;设置;} –
@MichalHainc我不认为这是一个重复的问题。仔细阅读他的问题,看看我的答案。 – CodingYoshi