jjzjj

readonly

全部标签

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# readonly 与 Java final

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

c# - 在 C# 中实现全局常量的最佳方法是什么?

我有一个Common项目,我在其中添加了QueryStringNames的公共(public)常量。我知道通常常量应该是内部常量或私有(private)常量,但我在这里需要公共(public)常量,因为我想允许全局访问查询字符串名称、sessionkey等。我知道有3种解决方案,但它们都有一个重要问题。调用方程序集将包含我的常量的副本,这意味着如果我必须更改常量值,我将必须编译我的通用程序集和调用方程序集!1)publicconststringConstName="avalue";2)publicreadonlystringConstName="avalue";3)Tobestored

c# - 设置 cell.ReadOnly 无效

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

c# - .NET 中对以 1、10 和 2 开头的字符串进行排序并遵守数字顺序的最短方法是什么?

我需要按如下方式对文件名进行排序:1.log、2.log、10.log但是当我使用OrderBy(fn=>fn)时,它会将它们排序为:1.log,10.log,2.log我显然知道这可以通过编写另一个比较器来完成,但是有没有一种更简单的方法可以将字典顺序更改为自然排序顺序?编辑:目标是获得与在Windows资源管理器中选择“按名称排序”时相同的顺序。 最佳答案 您可以使用Win32CompareStringEx功能。在Windows7上,它支持您需要的排序。您将使用P/Invoke:staticreadonlyInt32NORM_I

c# - 设置只读字段(这是错误吗?)

在刚刚玩c#的时候,发现了一件奇怪的事情。代码如下:classProgram{staticvoidMain(string[]args){System.Diagnostics.Debug.Write(string.Empty);typeof(string).GetField("Empty",BindingFlags.Static|BindingFlags.Public).SetValue(null,"Tolgahan");Console.WriteLine(string.Empty);//output:Tolgahan}}为什么反射让我们改变只读字段?问题是“为什么允许通过反射设置”,而

c# - 有没有办法使只读(不仅仅是私有(private))自动属性?

自动属性让我替换这段代码:privateMyTypemyProperty;publicMyTypeMyProperty{get{returnmyPropertyField;}}使用此代码:publicMyTypeMyProperty{get;privateset;}在这里和那里进行了一些更改-但有没有办法替换此代码:privatereadonlyMyTypemyProperty;publicMyTypeMyProperty{get{returnmyPropertyField;}}有类似的东西吗? 最佳答案 的确,目前没有办法做到这一

c# - 处理只读 List<T> 成员时应该如何使用属性

当我想在我的类之外将值类型设置为只读时,我会这样做:publicclassmyClassInt{privateintm_i;publicinti{get{returnm_i;}}publicmyClassInt(inti){m_i=i;}}我该怎么做才能制作List在我的类(class)之外输入只读(这样他们就不能在其中添加/删除元素)?现在我只是宣布它公开:publicclassmyClassList{publicListli;publicmyClassList(){li=newList();li.Add(1);li.Add(2);li.Add(3);}}

c# - 实现对公众只读但对继承人可写的属性的最佳方法是什么?

如果我有一个我想让继承者写入的属性,但在外部保持只读,那么实现它的首选方法是什么?我通常会选择这样的东西:privateobjectm_myProp;publicobjectMyProp{get{returnm_myProp;}}protectedvoidSetMyProp(objectvalue){m_myProp=value;}有没有更好的办法? 最佳答案 privateobjectm_myProp;publicobjectMyProp{get{returnm_myProp;}protectedset{m_myProp=valu

c# - 用例来理解为什么字符串列表应该被声明为只读

我试图了解哪些用例需要我将List声明为ReadOnly类型。与此相关的一个问题是:在实例化列表时分配了多少内存? 最佳答案 将字段标记为readonly的主要原因是为了让您知道常规代码不能交换列表引用。一个可能重要的关键场景是,如果您有其他代码在使用lock(theListField)对列表执行同步的类型中。.显然,如果有人交换列表实例:事情就会崩溃。请注意,在大多数具有列表/集合的类型中,预计不会更改实例,因此readonly断言这种期望。一个常见的模式是:privateList_items=newList();publicLi