草庐IT

item_property

全部标签

c# - 为什么 Property 执行比 Field 或 Method 执行慢?

在CLRviaCSharp第10章“属性”JeffRichter写道:Apropertymethodcantakealongtimetoexecute;fieldaccessalwayscompletesimmediately.Acommonreasontousepropertiesistoperformthreadsynchroni-zation,whichcanstopthethreadforever,andtherefore,apropertyshouldnotbeusedifthreadsynchronizationisrequired.Inthatsituation,ameth

C#6 : nameof() current property in getter/setter

有没有办法在getter/setter中获取当前属性的名称?像这样:publicstringMyProperty{get{returnbase.Get(nameof(ThisProperty));}set{base.Set(nameof(ThisProperty),value);}}nameof(ThisProperty)应该解析为“MyProperty”。 最佳答案 nameof无法做到这一点,但有更好的方法(自C#5起可用)。您可以使propertyName参数可选,并将CallerMemberName属性应用于它:protec

c# - 如何从控制台应用程序中访问 Properties 命名空间?

我正在尝试存储/检索存储在应用程序设置中的值。在我的控制台应用程序中,我似乎无法访问Properties.Setting命名空间。我的网上冲浪表明,在控制台应用程序中执行此操作可能需要做更多的工作。如何做到这一点?stringtest=Properties.Settings.Default.MyString;谢谢! 最佳答案 默认情况下,控制台应用程序中没有设置文件。但是,您只需在解决方案资源管理器中右键单击您的项目,选择“属性”,然后在出现的窗口中单击“设置”选项卡,即可添加一个。应该有一个链接,上面写着“单击此处创建默认设置文件

c# - 系统.Runtime.Serialization.InvalidDataContractException : No set method for property

如错误所示,我的属性没有setter,但我不想要setter,它应该是只读的。 最佳答案 已编辑:使二传手成为内部。这仍然可以在程序集中设置,但这是一个很好的技巧,当用于位于其他人使用的程序集中的数据对象时效果很好,因为那些使用程序集的人将无法设置该属性,但是各种序列化程序都可以。 关于c#-系统.Runtime.Serialization.InvalidDataContractException:Nosetmethodforproperty,我们在StackOverflow上找到一个类

c# property setter body 没有声明类级属性变量

我是否需要声明一个类级变量来保存一个属性,或者我可以只在getter/setter中引用self.{propertyname}?换句话说,我可以这样做吗?(我没有在任何地方定义mongoFormId):publicstringmongoFormId{get{returnthis.mongoFormId;}set{this.mongoFormId=value;revalidateTransformation();}} 最佳答案 您可以使用自动访问器或实现您自己的访问器。如果您使用自动访问器,C#编译器将为您生成一个支持字段,但如果您实

c# - 获取在 lambda 中定义的属性 o => o.Property1 的值

我需要获取在lambda中定义的属性的值publicstaticMvcHtmlStringMyHelper(thisHtmlHelperhtml,Expression>prop){varvalue=\\getthevalueofProp1(notthename"Prop1")...}预期用途是这样的:publicclassFooViewModel{publicstringProp1{get;set;}}%>o.Prop1)%> 最佳答案 这里为什么要表达?如果你只想拥有属性值,Func就足够了-它就像任何其他委托(delegate)

c# - 从 Dictionary<Key, Item> 中移除元素

我有一个字典,其中的项目是(例如):“A”,4“乙”,44“再见”,56“C”,99“D”,46"6672",0我有一个列表:“一个”“C”“D”我想从我的字典中删除所有键不在我的列表中的元素,最后我的字典将是:“A”,4“C”,99“D”,46我该怎么办? 最佳答案 构造新的Dictionary以包含列表中的元素更简单:ListkeysToInclude=newList{"A","B","C"};varnewDict=myDictionary.Where(kvp=>keysToInclude.Contains(kvp.Key)).

c# - 为什么我会收到 "The modifier ' virtual'is not valid for this item“错误?

我正在尝试使用以下模型创建mvc应用程序:(代码很大。我认为它对您来说更容易理解)publicclassJob{publicintJobId{get;set;}publicstringName{get;set;}publicListGetJobs(){ListjobsList=newList();jobsList.Add(newJob{JobId=1,Name="Operator"});jobsList.Add(newJob{JobId=2,Name="Performer"});jobsList.Add(newJob{JobId=3,Name="Head"});returnjobsLi

c# - 格式化日期时间错误 "Templates can be used only with field access, property access, single-dimension array index.."

在MVCRazorView中,我试图将DateTime字段格式化为仅显示时间。使用下面的代码我收到错误“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。”@(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss")))任何帮助请问是什么导致了这个错误以及如何解决它?感谢您的帮助。 最佳答案 我遇到了同样的问题,我已经解决了。如果您想将“LastUpdatedDate”转换为特定格式,那么您可以试试这个:@Html.TextBoxFor(m=>row

C# Auto Property - 这是 'pattern' 最佳实践吗?

我似乎在我的代码中经常使用这种模式,我知道它不再是一个简单的自动属性:publicIListBCSFilters{get;set;}我一直使用的代码是这样的:privateIList_BCSFilters;//////GetsorsetstheBCSfilters.//////TheBCSfilters.publicIListBCSFilters{get{if(_BCSFilters==null){_BCSFilters=newList();}return_BCSFilters;}set{_BCSFilters=value;}}这样我就可以只执行MainClass.BCSFilters