当前位置: 首页 > 编程语言 > C#

为什么要在属性访问器中使用私有变量?分享

时间:2023-04-10 12:14:24 C#

为什么要在属性访问器中使用私有变量?对不起,如果我是菜鸟,我有这个疑问,为什么我们使用私有变量并使用属性设置它们?为什么我们不能单独使用本地人?我说的是像这个privatestring_testVariable;这样的情况。publicstringMyProperty{get{return_testVariable;}set{_testVariable=value;}}我正在考虑简单地使用publicstringMyProperty{get;放;为什么会有多余的私有变量?这两种策略有何不同?任何人都可以对此有所了解。谢谢你的例子在语义上是一样的。简洁的属性声明语法(只是{get;set;})是C#3.0中提供的一种快捷方式。编译器实际上创建了一个私有支持变量和一个简单的getter和setter,如第一个示例所示。如果您所做的只是创建一个getter和setter(当发生任何事情时什么也没有发生),那么简洁的语法是一个不错的选择。如果在设置值时必须执行任何其他操作(例如重绘控件),则需要完整语法。为什么会有多余的私有变量?这两种策略有何不同?任何人都可以对此有所了解。如果您所做的只是读/写变量,那么就没有。否则,您需要私有变量有两个原因:Datavalidation//DatavalidationpublicclassIntWrapper{privateint_value;publicintValue{get{返回值;}set{if(value=0");}_value=value;}}}Getter/setter包装底层数据存储publicclassStringBuffer{Listchars=newList();//包装底层数据存储publicstringValue{get{returnnewString(chars.ToArray());}set{chars=newList(value.ToCharArray());}}publicvoidWrite(strings){Write(chars.Count,s);}公共无效Write(intindex,strings){if(index>chars.Count){thrownewException("OutofRange");}foreach(charcins){if(index你给出的第二个例子:publicstringMyProperty{get;set;}仅在.Net框架中可用在更高版本中(我相信v3.0以后)第一个示例允许您在返回和赋值语句上设置断点,导致调试器在分配/读取属性时中断。第一个代码片段可以让你修改一些私有类状态。将私有状态包装在属性中很好,因为它隐藏了实现。稍后你可以更改实现并且属性(外部接口)可能保持不变。例如,假设您没有在setter中设置单个字符串,而是将字符串设置在某种私有存储中。您将其写入文件,或者将其写入共享内存。或者,您可能只计算字符串的散列值,根本不存储它,就像您的Possiblythesamewithpasswords一样。第二个代码片段中的自动属性与私有变量无关。自动属性设计允许将来修改,第一个剪辑中使用的显式属性设计也是如此。例如,您可以将自动属性转换为显式实现的属性,作为修改的一部分。Mashesh,我们都必须从某个地方开始!您通过以下示例询问了私有变量与属性:privatestring_testVariable;publicstringMyProperty{get{return_testVariable;}set{_testVariable=value;}}-或-publicstringMyProperty{get;放;你有没有考虑过:publicstringMyProperty{get;私有集;您可以将作用域应用于属性getter/setter。...很酷的东西。哦耶。..在定义类(例如构造函数)中使用此类型的属性时,请在其前面加上“this”前缀。-所以赋值看起来像'this.MyProperty="anassignmentstring";'。这使您的意图更加清晰。..属性基本上是字段的包装器。这个包装器可以使用来自外部世界的变量。在C#3.0中,您可以简单地声明一个属性,如publicstringMyProperty{get;放;}publicstringMyProperty{得到;放;}并且编译器会自动声明一个私有变量并为其获取set方法。如果您需要在声明属性的类中执行任何计算,那么您应该使用私有字段。有时您不知道什么时候第一次编写代码,如果您稍后可能会添加一些需要使用私有变量的代码。当然,如果需要,您可以稍后添加。我只是自动创建私有变量,假设它稍后会被使用。这在大型企业应用程序或快速发展的应用程序(敏捷)中可能更相关,在初始编码期间可能不知道完整的实现。我讨厌在不需要时支持变量,这会在必要时导致更多的复杂性。显然,如果您需要在getter或setter中做一些特殊的事情,那么应该使用完整的语义形式而不是糖。此外,我喜欢使用属性作为调试属性设置的一种方式,或者使用有时由于反射而不那么明显的方法,这是我喜欢使用它们的一个原因。当可以在类内部访问支持变量时,无论是通过属性本身还是通过支持变量,我发现尝试调试代码很令人沮丧,而且没有任何信息告诉编码人员访问它的正确方法。您可以在内部访问支持变量和属性,这是正确的方法吗?这并不明显......这与C#语言无关,但更多的是应用程序。使用属性的一个原因是它在许多框架中被认为是“特殊的”。例如,Silverlight和WPF将绑定到属性而不是字段。以上是C#学习教程:WhyshouldIuseprivatevariablesinpropertyaccessors?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: