如果抽象类中的公共(public)构造函数只能由其派生类调用,那么它在功能上应该等同于protected构造函数。对吧?在抽象类中声明公共(public)构造函数而不是保护构造函数有什么区别吗?你会用它做什么?为什么编译器不提示? 最佳答案 完全正确。您应该支持protected构造函数。编辑:不,编译器不会提示,但像FxCop(和代码分析)这样的工具会提示。我相信您可以使用抽象类上的公共(public)构造函数执行一些奇怪的反射技巧,但从您只是向其他编写子类的开发人员提供基类功能的角度来看,请坚持使用protected构造函数。
这实际上是这个问题的另一部分。Errorsettingsbreakpointsbutonlyonsomelineswhiledebugging我在vs2010中远程调试CRM2011插件。我是我的源文件之一,除少数地方外,我可以在整个代码中设置断点。当我尝试设置断点时出现此错误“无法设置以下断点:”和“公共(public)语言运行时无法设置断点。”protectedoverridevoidExecutePlugin(){SetStateResponseresponse=newSetStateResponse();//Breakpointworks//Messageswitchswitc
如果我有一个实现了IDisposable的SomeDisposableObject类:classSomeDisposableObject:IDisposable{publicvoidDispose(){//Dosomeimportantdisposalwork.}}我还有另一个名为AContainer的类,它有一个SomeDisposableObject的实例作为公共(public)属性:classAContainer{SomeDisposableObjectm_someObject=newSomeDisposableObject();publicSomeDisposableObjec
我有以下代码:publicclassParent{publicstringMyField{get;set;}}publicclassChild:Parent{protectednewintMyField{get;set;}}我尝试通过以下方式访问它:staticvoidMain(string[]args){Childchild=newChild();child.MyField="something";}Visualstudio2008编译时没有注释,但在Mono(2.4.2,Ubuntu)下我收到错误消息'HideTest.Child.MyField'isinaccessibledue
似乎每个C#静态分析器在看到公共(public)字段时都想提示。但为什么?当然,在某些情况下,一个公共(public)(或内部)字段就足够了,并且拥有一个带有get_和set_的属性是没有意义的方法?如果我确定我不会重新定义该字段或向其添加内容(副作用很糟糕,对吧?)-难道一个简单的字段就不够了吗? 最佳答案 因为它破坏了封装——这就是为什么大多数人大量使用访问器的原因。但是,如果您认为它是您任务的正确解决方案,请忽略它(意味着严格的封装投诉)并为您的项目做正确的事情。不要让OO纳粹分子告诉你其他情况。
如何为属性创建公共(public)getter和私有(private)setter?以下是正确的吗?publicStringPassword{set{this._password=value;}}privateStringPassword{get{returnthis._password;}} 最佳答案 是的,即使使用自动属性也是可能的。我经常使用:publicintMyProperty{get;privateset;} 关于c#-在C#中是否可以使用同名的公共(public)gette
我在很多地方都读到公开字段不是一个好主意,因为如果您以后想要更改属性,您将不得不重新编译所有使用您的类的代码。但是,在不可变类的情况下,我不明白为什么您需要更改属性-毕竟您不会向“集合”添加逻辑。对此有什么想法,我是否遗漏了什么?区别的例子,对于那些比文本更容易阅读代码的人:)//ImmutableTupleusingpublicreadonlyfieldspublicclassTuple{publicreadonlyT1Item1;publicreadonlyT2Item2;publicTuple(T1item1,T2item2){Item1=item1;Item2=item2;}}
这个问题是出于好奇。有区别吗:publicabstractclassMyClass{publicMyClass(){}}和publicabstractclassMyClass{protectedMyClass(){}}谢谢。 最佳答案 它们在所有实际用途中都是相同的。但由于您要求差异,我能想到的一个差异是,如果您使用反射搜索类的构造函数,那么匹配的BindingFlags将不同。BindingFlagsflags=BindingFlags.Public|BindingFlags.Instance;varconstructor=typ
我有一个System.Security.Cryptography.RSACryptoServiceProvider实例,我需要将它的key导出到PEM字符串-如下所示:-----BEGINRSAPRIVATEKEY-----MIICXAIBAAKBgQDUNPB6Lvx+tlP5QhSikADl71AjZf9KN31qrDpXNDNHEI0OTVJ1OaP2l56bSKNo8trFne1NK/B4JzCuNP8x6oGCAG+7bFgkbTMzV2PCoDCRjNH957Q4Gxgx1VoS6PjD3OigZnx5b9Hebbp3OrTuqNZaK/oLPGr5swxHILFVeHKu
我正在使用InvokeRepeating()在游戏中调用方法。我打电话InvokeRepeating()在Start()方法之一GameObject类。设置repeatRateInvokeRepeating()的参数,我正在传递一个名为secondsBetweenBombDrops的公共(public)字段.Unity忽略我为secondsBetweenBombDrops指定的值在代码中,而是在secondsBetweenBombDrops时使用一些默认值(即1)没有静态修饰符声明:publicfloatsecondsBetweenBombDrops=10f;voidStart(){I