草庐IT

properties

全部标签

c# - 阻止访问私有(private)成员变量?强制使用公共(public)属性(property)?

我使用的是.NET2.0,因此无法访问自动属性。所以我必须求助于以下编码私有(private)变量和公共(public)属性的方法privatestringm_hello=null;publicstringHello{get{returnm_hello;}set{m_hello=value;}}对于上述private/public成员的包含类的方法,是否有限制访问private变量的方法?我不喜欢我可以使用m_hello或Hello。谢谢。 最佳答案 正如其他人所建议的那样,这应该是一个答案...当面向.NET2.0时,您仍然可以在

c# - 验证错误 : The value 'on' is not valid for <<property name>>

在我的项目中,我有一个模型,您可以在这里看到我模型的一部分:publicclassCheckoutModel{publicboolOtherPlace{get;set;}[RequiredIf("OtherPlace",true,ErrorMessage="")]publicstringOtherPlaceFullName{get;set;}[RequiredIf("OtherPlace",true,ErrorMessage="")]publicintOtherPlaceProvinceId{get;set;}[RequiredIf("OtherPlace",true,ErrorMes

C# 属性,为什么要在赋值前检查是否相等

为什么我看到人们实现这样的属性?检查值是否等于当前值有什么意义?publicdouble?Price{get{return_price;}set{if(_price==value)return;_price=value;}} 最佳答案 在这种情况下,它是没有实际意义的;但是,在存在相关副作用(通常是事件)的情况下,它会避免琐碎的事件。例如:set{if(_price==value)return;_price=value;OnPriceChanged();//invokesthePriceevent}现在,如果我们这样做:foo.Pr

c# - 如何正确定义类属性?

在项目中定义新类时,正确/最佳做法是什么?过去我创建了如下类:publicclassMyClass{publicstringFirstName{get;set;}publicstringLastName{get;set;}}通常我会使用这样的类在项目中创建集合。然而,随着我继续学习和阅读更多有关c#sharp的信息,我看到了类定义为的示例:classMyClass//notsettopublic{privatestring_firstName;//firstdefinedasfieldsprivatestring_lastName;publicstringFirstName//then

C# 通过变量名获取和设置属性

有什么办法吗?我尝试测试对象的属性是否存在,如果存在,我想为其设置一个值。(也许完整的想法是错误的,如果是真的-为什么?)classInfo{publicstringX1{set;get;}publicstringX2{set;get;}publicstringX3{set;get;}}Dictionaryvalues=newDictionary();values.Add("X1","blah1");values.Add("X2","blah2");values.Add("NotThere","blah3");Infoinfo=newInfo();foreach(variteminva

c# - 执行非查询 : Connection property has not been initialized.

下午,所以我已经在这个问题上研究了几个小时,但无法真正克服最后一个障碍。下面是我正在编写的这个程序的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Diagnostics;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Configuration;namespaceTest{classProgram{staticvoidMain(){EventLogalog=newEventLog();

c# - 属性和方法的区别

这个问题在这里已经有了答案:ExposingMemberObjectsAsPropertiesorMethodsin.NET(7个答案)关闭9年前。例如在返回值时使用哪个更好publicintEmployeeAge{get{returnintEmployeeAge};}和publicintEmployeeAge(){returnintEmployeeAge;}哪个更好,为什么?当我们有像上面那样的场景时,最好的编程实践是什么?

c# - 属性比字段慢

似乎我遇到的每篇文章都达成了相同的共识:仅返回字段的属性由JIT内联并且具有与字段几乎相同的性能。但是,我目前的情况似乎并非如此。我的程序进行密集计算,访问许多简单的自动getter和私有(private)setter的属性。然而,在这种特殊情况下,我只是复制一个对象。在启用优化的Release模式下分析代码会导致多次调用属性的get函数。对Copy()的调用总计约5.6毫秒。但是,当属性被转换为字段时,该函数的运行速度比使用属性快6倍:与使用字段相比,比较两个属性的相等性似乎会导致更多的性能损失。这是一个类的IEquatable实现的基准测试,使用相同的代码但将属性与字段交换。如果J

c# - 具有覆盖属性和反射的奇怪效果

我在.NET/Reflection中遇到了一个奇怪的行为,找不到任何解决方案/解释:classA{publicvirtualstringTestString{get;set;}}classB:A{publicoverridestringTestString{get{return"x";}}}由于属性只是函数对(get_PropName()、set_PropName()),因此仅覆盖“get”部分应该保留“set”部分在基类中。如果您尝试实例化B类并为TestString赋值,就会发生这种情况,它使用A类的实现。但是如果我在反射中查看类B的实例化对象会发生什么:PropertyInfop

c# - CA1819 : Properties shouldn't return arrays - What is the right alternative?

我以前遇到过这个FxCop规则,但对如何解决违规问题并不满意(thread1、thread2)。我现在有另一个案例,我需要纠正违反CA1819的行为亲切。具体来说,我有一个算法库,它使用如下所示的公共(public)“输入对象”对曲线(x,y)执行一些分析计算:publicclassInputObject{publicdouble[]X{get;set;}publicdouble[]Y{get;set;}//+lotsofotherthingswell}此对象的X和Y属性在库中的数百个位置使用,通常使用索引。输入对象永远不会被算法改变,但实际上如果是这样也无关紧要。另外,.Length