草庐IT

readonly-collection

全部标签

c# - 无法使用集合初始值设定项实现类型 XYZ,因为它不实现 'System.Collections.IEnumerable'

我有以下类(class):publicclassCommentList{stringItemType;stringComment1;stringStatus1;stringDiscussionBoardId;GuidCourseId;GuidCommentID;}我正在尝试执行以下LINQ语句:Listquery=fromcindb.Commentsjoinsindb.Statusonc.StatusIdequalss.StatusIdjoindindb.DiscussionBoardsonc.DiscussionBoardIdequalsd.DiscussionBoardIdwher

c# - 我可以遍历 Collection.Request.Form 吗?

我有一些具有唯一ID的复选框。是否可以在一个表单集合中找到所有的checkbox+uniquenum?有点像-foreach(variteminCollection.Request.Form["checkbox"+withUniqueIDNum]){//code} 最佳答案 没有。相反,您可以遍历所有键,并检查它们是否以checkbox开头。例如:foreach(stringkeyinRequest.Form){if(!key.StartsWith("checkbox"))continue;...}NameValueCollecti

c# - 使用 IReadOnlyCollection<T> 而不是 IEnumerable<T> 作为参数以避免可能的多重枚举

我的问题与thisone有关关于IEnumerable的使用对比IReadOnlyCollection.我也一直使用IEnumerable将集合公开为返回类型和参数,因为它受益于不可变和延迟执行。但是,我越来越担心我的代码中必须枚举参数以避免ReSharper可能给出的多重枚举警告的地方的激增。我理解ReSharper为什么建议这样做,并且我同意它建议的代码(如下)以确保封装(即,不假设调用者)。Foo[]arr=colasFoo[]??col.ToArray();但是,我发现此代码的重复性具有污染性,并且我同意一些消息来源的观点IReadOnlyCollection是一个更好的选择,

c# - 第三方库中麻烦的 GC.collect() 调用

在分析我的应用程序(C#、.NET4)时,我注意到我正在使用的第三方库显式调用了GC.Collect()。这非常烦人,因为它有时会对我的应用程序性能产生巨大影响,因为对该库的一些调用最终会陷入巨大的循环:花在GC.Collect上的时间占总执行时间的80%以上。当然,我向库维护者报告了这种行为(库不是开源的),但是当他们正在开发新版本时,我想优化我的应用程序。我能做什么?我尝试通过将GCSettings.LatencyMode设置为GCLatencyMode.LowLatency来配置GC(当然,仅在执行库调用期间),但无济于事。我宁愿避免fork我的过程。有什么想法吗?

c# - 返回 List<T> 的只读包装器的哪种方式更可取?

比如说,我们有一个带有私有(private)列表的通用类。我们至少可以通过两种方式让它返回此列表的只读包装器:publicclassTest{publicListlist=newList();publicIEnumerableValues1{get{foreach(Tiinlist)yieldreturni;}}publicIEnumerableValues2{get{returnlist.AsReadOnly();}}}Values1和Values2都反射(reflect)了底层集合中的任何变化,并防止它通过自身进行修改。哪种方式更可取?应该注意什么?或者还有其他更好的方法吗?

c# - 使用 SessionStateBehavior.ReadOnly 写入 session 变量

在我的ASP.NETMVC5应用程序中,我正在对Controller内的方法执行GET请求,该方法需要读取存储在session中的值。为了避免session状态锁定问题,我在类级别将SessionStateBehavior设置为ReadOnly。[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]publicclassTestController:Controller{vartest=Session["KEY"];...但是,偶尔,我需要将Session变量覆盖为同一方法中的其他内容。ASP.NETM

c# - .NET 4.0 System.Collections.Concurrent 集合在 .NET 3.0 SynchronizedCollection 的功能中添加了什么?

.NET4.0引入了System.Collections.Concurrent命名空间:"TheSystem.Collections.Concurrentnamespaceprovidesseveralthread-safecollectionclassesthatshouldbeusedinplaceofthecorrespondingtypesintheSystem.CollectionsandSystem.Collections.Genericnamespaceswhenevermultiplethreadsareaccessingthecollectionconcurrentl

C# readonly 与 Java final

在Java中,final表示一个变量只能被赋值一次,但该赋值可以发生在程序的任何地方。在C#中,readonly表示只能在构造函数中分配一个字段,在我看来,这明显没那么有用。众所周知,C#深受Java设计的影响,但这种差异一直让我感到困惑,因为它很奇怪。有谁知道CLR中是否存在技术原因,导致C#的readonly与Java的final相比没有那么有用的行为?编辑:回应评论;我想指出的是,我很清楚不变性的好处,而且我到处都在使用它。我认为readonly不如Java有用,因为:publicclassFoo{privatereadonlyint_bar;Foo(){_bar=5;}}糟糕,

c# - 设置 cell.ReadOnly 无效

我有一个DataGridView,我想通过设置ReadOnly=true禁用一些单元格/行。有时这不起作用并且单元格/行仍然可编辑的原因可能是什么?还有其他方法可以防止编辑特定行或单元格吗?是否可以防止单击或输入单元格? 最佳答案 您可以使用CellBeginEdit来阻止编辑事件。如果您不想编辑单元格,可以取消编辑。例如,如果您只希望第一列是可编辑的,您可以这样做:privatevoiddataGridView1_CellBeginEdit(objectsender,DataGridViewCellCancelEventArgse

c# - 具有泛型的对象类型中的 "apostrophe + number"是什么意思(例如 "Collection` 1")?

我有一个对象(MyObject)和一个属性(MyProperty)。我想获取它的类型名称(即String或MyClass等)。我使用:PropertyInfopropInfo=typeof(MyObject).GetProperty("MyProperty");Console.WriteLine(propInfo.PropertyType.Name);Console.WriteLine(propInfo.PropertyType.FullName);简单类型没问题,但当MyProperty是通用类型,我在获取它的名称时遇到问题(例如Collection)。它打印:Collection`