如何为属性创建公共(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
我有一个.NetC#类,我需要在其中公开一个变量。我需要在一个方法中(而不是在构造函数中)初始化这个变量。但是,我不希望该变量可以被其他类修改。这可能吗? 最佳答案 不要使用字段-使用属性:classFoo{publicstringBar{get;privateset;}}在此示例中,Foo.Bar在任何地方都是可读的,并且只能由Foo本身的成员写入。附带说明一下,此示例使用了版本3中引入的称为自动实现的属性的C#功能。这是语法糖,编译器会将其转换为具有私有(private)支持字段的常规属性,如下所示:classFoo{[Comp
我在XNA中四处寻找,发现其中的Vector3类使用公共(public)字段而不是属性。我尝试了一个快速基准测试,发现对于struct来说,差异非常显着(将两个向量加在一起1亿次需要2.0秒的属性和1.4秒的字段)。对于引用类型,差异似乎没有那么大,但确实存在。那是为什么呢?我知道一个属性被编译成get_X和set_X方法,这会产生方法调用开销。但是,这些简单的getter/setter不是总是由JIT内联吗?我知道您不能保证JIT决定做什么,但肯定这在概率列表中相当高?还有什么可以在机器级别将公共(public)字段与属性分开?还有一件事我一直在想:自动实现的属性(publici
这个问题在这里已经有了答案:HowdoyoudefaultanewclasstopublicwhencreatingitinVisualStudio?(9个回答)关闭9年前。在VisualStudio中,当你添加一个新类时,它总是在创建时没有修饰符,这使得类成为内部类。classMyClass{}我希望我的类默认创建为公共(public)类。为什么默认是内部的?你更喜欢什么?
我有一个内部类,内部构造函数不允许它在泛型集合中使用,所以我将它更改为public。如果您在内部类中有一个公共(public)构造函数,那么可访问性是什么?与拥有一个内部构造函数有什么不同? 最佳答案 两者本质上是一样的。我看到的用于区分它们的一个论点是,使您的构造函数internal确保该类型只会由当前程序集中的类型实例化,即使后来决定该类型本身应该是public而不是internal。换句话说,您可以决定更改类型的可见性,而不解除对其实例化的限制。使构造函数public具有相反的效果(很明显),如果您希望它可以在任何可见的地方实
在内部,编译器应该将lambda表达式转换为方法。在那种情况下,这些方法是私有(private)的还是公共(public)的(或其他),是否有可能改变它? 最佳答案 这取决于。在当前版本的VisualStudio中,实现lambda的方法从不公开,但也不总是私有(private)的。测试某些版本的lambda的简单程序:publicclassProgram{publicstaticvoidMain(){varprogram=newProgram();Try("A",program.A);Try("B",program.B);Try(