我正在审查另一个开发人员的代码,他为类级别变量编写了很多类似于以下内容的代码://////howoftentocheckformessages///privateintCheckForMessagesMilliSeconds{get;set;}//////applicationpath///privatestringAppPath{get;set;}由于变量是私有(private)的,以这种方式编码不会增加不必要的开销吗?我不是在考虑私有(private)变量需要这种编码模式的情况吗? 最佳答案 这就像说私有(private)方法没
某些C#代码存在一个奇怪的问题-属性的Getter方法在未明确标记时显示为虚拟。该类的DbKey属性出现问题(完整代码):publicclassProcessingContextKey:BusinessEntityKey,IProcessingContextKey{publicProcessingContextKey(){//Nothing}publicProcessingContextKey(intdbKey){this.mDbKey=dbKey;}publicintDbKey{get{returnthis.mDbKey;}set{this.mDbKey=value;}}privat
我不敢相信我以前从未遇到过这种情况,但为什么我会收到此代码的编译器错误?publicclassMain{publicMain(){varambiguous=newFooBar(1);varisConfused=ambiguous.IsValid;//thiscallisambiguous}}publicclassFooBar{publicintDefaultId{get;set;}publicFooBar(intdefaultId){DefaultId=defaultId;}publicboolIsValid{get{returnDefaultId==0;}}publicboolIsV
我倾向于假设getter只不过是围绕一组相当轻量级的指令的访问控制包装器,用于返回一个值(或一组值)。因此,当我发现自己编写的setter更长、更耗CPU时,我觉得也许这不是最明智的做法。在我自己的代码中调用getter(特别是让我们引用C#,其中方法调用与getter调用之间存在语法差异)时,我隐含地假设它们是轻量级的——但实际上这可能不是案例。对此的普遍共识是什么?除了使用其他人的库之外,您是否编写heavygetters?还是您倾向于将较重的getter视为“完整方法”?附言。由于语言差异,我预计对此会有很多不同的想法...... 最佳答案
开放委托(delegate)是对没有目标的实例方法的委托(delegate)。要调用它,您需要提供目标作为它的第一个参数。它们是优化代码的聪明方法,否则会使用反射并导致性能不佳。有关开放委托(delegate)的介绍,请参阅this.您在实践中使用它的方式是使用昂贵的反射代码来构建这些开放的委托(delegate),但是您可以像简单的委托(delegate)调用一样非常便宜地调用它们。我正在尝试编写代码,将任意PropertyInfo转换为其setter的此类委托(delegate)。到目前为止,我想出了这个:usingSystem;usingSystem.Collections.Ge
令我印象深刻的是,在尝试操作类中的字段时应该使用C#中的属性。但是当涉及到复杂的计算或数据库时,我们应该使用getter/setter。这是正确的吗?什么时候对属性使用s/getter? 最佳答案 .NET设计指南在Propertiesvs.Methods中提供了这个问题的一些答案。部分。基本上,属性与字段具有相同的语义。你不应该让一个属性抛出异常,属性不应该有副作用,顺序不重要,属性应该相对快速地返回。如果这些事情中的任何一个可能发生,最好使用一种方法。该准则还建议使用返回数组的方法。在决定是使用属性还是方法时,如果我将其视为字段
如果我对这条线的内部运作的理解是正确的:publicintMyInt{get;set;}然后它在幕后这样做:privateint_MyInt{get;set;}PublicintMyInt{get{return_MyInt;}set{_MyInt=value;}}我真正需要的是:privateboolIsDirty{get;set;}privateint_MyInt{get;set;}PublicintMyInt{get{return_MyInt;}set{_MyInt=value;IsDirty=true;}}但我想这样写:privateboolIsDirty{get;set;}pu
假设我们有一个带有属性和getter/setter的InnerClass类。我们还有一个包含InnerClass的OuterClass类。例如classInnerClass{privateintm_a;privateintm_b;publicintM_A{get{returnm_a;}set{m_a=value;}}}classOuterClass{privateInnerClassinnerClass}如何为OuterClass的innerClass成员实现正确的getter和setter?提前致谢! 最佳答案 语法不会有任何不同
这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:Whyusegettersandsetters?C#3.0Auto-Properties-usefulornot?用下面的方式定义属性有区别吗-//private,withgetter&setterprivatestringfName;publicstringName{get{returnthis.fName}set{this.fName=value}}//defineasaPropertypublicstringName{get;set;}据我所知,这只是一种风格偏好。我错过了什么吗?
我的经理问我使用带有setter而没有getter的属性是否是好的做法。publicclassPropertyWrapper{privateMyClass_field;publicMyClassProperty{set{_field=value;}}publicstringFirstProperty{get{return_field.FirstProperty;}}publicstringSecondProperty{get{return_field.SecondProperty;}}}他将使用其他属性来公开私有(private)字段中的属性,由该setter设置。我的建议是只使用私有