如何为属性创建公共(public)getter和私有(private)setter?以下是正确的吗?publicStringPassword{set{this._password=value;}}privateStringPassword{get{returnthis._password;}} 最佳答案 是的,即使使用自动属性也是可能的。我经常使用:publicintMyProperty{get;privateset;} 关于c#-在C#中是否可以使用同名的公共(public)gette
在C#6.0中我可以写:publicintProp=>777;但是我想用getter和setter。有没有办法做下一步的事情?publicintProp{get=>propVar;set=>propVar=value;} 最佳答案 首先,这不是lambda,尽管语法相似。它被称为“expression-bodiedmembers”。它们类似于lambda,但仍存在根本区别。显然它们不能像lambda那样捕获局部变量。此外,与lambda不同的是,它们可以通过名称访问:)如果您尝试将表达式主体属性作为委托(delegate)传递,您可
最近学了c#,所以在学写属性的时候,被教成这样:publicstringName{get;set;}汽车属性很棒!但现在我正在尝试做一些更复杂的事情,所以我需要编写一对自定义访问器。privatestring_Name;publicstringName{get{return_Name;}set{_Name=value}}我知道编译器在使用autos时会在其阴暗的深处创建一个私有(private)实例变量,但我被宠坏了,不想让那个私有(private)变量看起来毫无意义。有没有办法在没有私有(private)变量的情况下使用自定义访问器? 最佳答案
我在某处看到类似下面的内容,想知道它是什么意思。我知道他们是getter和setter,但是想知道为什么字符串Type是这样定义的。谢谢你帮助我。publicstringType{get;set;} 最佳答案 那些是Auto-ImplementedProperties(简称自动属性)。编译器将自动生成以下简单实现的等价物:privatestring_type;publicstringType{get{return_type;}set{_type=value;}} 关于c#:setter/
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个答案)关闭9年前。我想知道这些getter和setter声明之间的区别是什么,是否有首选方法(以及为什么)。第一个可以由VisualStudio自动生成。其他人呢?谢谢第一string_myProperty{get;set;}第二string_myProperty;publicstringmyProperty{get{return_myProperty;}set{_myProperty=value;}}第三string_myProperty;publicstringgetMyProp
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion为什么不允许使用以下C#代码:publicabstractclassBaseClass{publicabstractintBar{get;}}publicclassConcreteClass:BaseClass{publicoverrideintBar{get{return0;}set{}}}CS0546'ConcreteClass.Bar.set':cannotoverridebecau
我似乎有一个奇怪的习惯……至少据我的同事说。我们一直在共同致力于一个小项目。我编写类的方式是(简化示例):[Serializable()]publicclassFoo{publicFoo(){}privateBar_bar;publicBarBar{get{if(_bar==null)_bar=newBar();return_bar;}set{_bar=value;}}}所以,基本上,我只在调用getter并且该字段仍然为空时初始化任何字段。我认为这可以通过不初始化任何不在任何地方使用的属性来减少过载。ETA:我这样做的原因是我的类有几个属性返回另一个类的实例,而另一个类又具有包含更多
在C#中从getter或setter调用异步方法的最优雅方法是什么?这里有一些伪代码来帮助解释我自己。asyncTaskMyAsyncMethod(){returnawaitDoSomethingAsync();}publicIEnumerableMyList{get{//callMyAsyncMethod()here}} 最佳答案 没有任何技术理由表明C#中不允许使用async属性。这是一个有目的的设计决定,因为“异步属性”是一种矛盾。属性应该返回当前值;他们不应该启动后台操作。通常,当有人想要一个“异步属性”时,他们真正想要的是
有没有办法在数组上获取/设置行为?我想象这样的事情:vararr=['one','two','three'];var_arr=newArray();for(vari=0;i 最佳答案 使用Proxies,您可以获得所需的行为:var_arr=['one','two','three'];varaccessCount=0;functiondoSomething(){accessCount++;}vararr=newProxy(_arr,{get:function(target,name){doSomething();returntarg
我最近读到一个事实,即可以在JavaScript中定义getter/setter。这似乎非常有用-setter是一种“助手”,它可以在实际设置之前先解析要设置的值。例如,我目前有这样的代码:varobj=function(value){vartest=!!value;//'test'hastobeabooleanreturn{gettest(){returntest},settest(value){test=!!value}};};varinstance=newobj(true);此代码始终将value转换为bool值。因此,如果您编写instance.test=0,则instan