Tag: readonly

const与readonly

今天我发现了一篇文章,其中const字段称为编译时常量,而readonly字段称为运行时常量 。 这两个短语来自“Effective C#”。 我在MSDN和语言规范中搜索,找不到运行时常量 。 没有攻击性,但我不认为运行时常量是一个恰当的短语。 private readonly string foo = “bar”; 创建一个名为“foo”的变量,其值为“bar”,值为readonly,这里它是一个变量,没有constant业务。 只读变量仍然是变量,它不能是常量。 变量和常量是互斥的。 也许这个问题太过分了,我还是想听别人的意见。 你怎么看?

无法修改的变量

C#是否允许无法修改的变量? 它就像一个const ,但不必在声明时为它赋值,该变量没有任何默认值,但只能在运行时赋值一次(编辑:可能不是从构造函数)。 或者这不可能吗?

C#线程中的只读字段是否安全?

C#线程中的只读字段是否安全? public class Foo { private readonly int _someField; public Foo() { _someField = 0; } public Foo(int someField) { _someField = someField; } public void SomeMethod() { doSomething(_someField); } } 经历了一些post: – 在C#中将字段标记为只读有什么好处? – JaredPar认为,曾经构建的只读字段是不可变的,因此是安全的。 – Readonly Fields和Thread Safety ,表明如果构造函数做了很多工作,那么存在一些风险。 因此,如果在上面的代码中使用readonly字段,并且构造函数很轻,那么它是否是线程安全的? 如果someField是ref类型(例如字符串数组)怎么办?

有没有办法让readonly(不仅仅是私有)自动属性?

自动属性让我替换此代码: private MyType myProperty; public MyType MyProperty { get { return myPropertyField; } } 使用此代码: public MyType MyProperty { get; private set; } 这里和那里有一些变化 – 但有没有办法替换这个代码: private readonly MyType myProperty; public MyType MyProperty { get { return myPropertyField; } } 有类似的东西?

C#中私有const和私有只读变量之间有区别吗?

在C#中使用private const变量或private static readonly变量之间是否有区别(除了必须为const分配编译时表达式)? 由于它们都是私有的,因此没有与其他库的链接。 它会有什么不同吗? 例如,它可以产生性能差异吗? 实习字符串? 有什么相似的吗?

如何在PostBack()之后保留只读TextBox的文本?

我有一个ASP.NET TextBox ,我希望它是ReadOnly 。 (用户使用其他控件修改它) 但是当有PostBack() ,文本会重置为空字符串。 据我所知,如果将ReadOnly属性设置为TextBox的True ,则其内容不会通过PostBack()保存。 有没有办法在PostBack()之后保留内容并使TextBox不能被用户编辑? 我试图将Enabled属性设置为False ,但是在PostBack()之后内容仍然没有保存。

WinForms中的Readonly ComboBox

我正在使用Designer和WinForms在C#,Visual Studio 2008中编写GUI。 我有一个ComboBox控件,我希望它只允许从提供的选项中进行选择而不接受用户输入的字符串。 它似乎没有ReadOnly属性,禁用它会阻碍控件的可读性(以及禁止用户选择)。

静态只读与const – 不同的assemblyPOV?

关于这个问题有很多问题,但是没有(除了一个,但仍然是一个短的 )处理以下场景。 来自C#4书: 马克还写道: 如果更改const的值,则需要重建所有客户端 题 : 1)为什么? static readonly和static吗? 2)实际值保存在哪里 ? 3)如何使一个字段static readonly实际上solve “幕后”这个问题?

反序列化后初始化私有只读字段

我需要在反序列化后初始化私有只读字段。 我有以下DataContract: [DataContract] public class Item { public Item() { // Constructor not called at Deserialization // because of FormatterServices.GetUninitializedObject is used // so field will not be initialized by constructor at Deserialization _privateReadonlyField = new object(); } // Initialization will not be called at Deserialization (same reason as for constructor) private readonly object _privateReadonlyField […]

什么时候,如果有的话,我们应该使用const?

Const被烘焙到客户端代码中。 Readonly不是。 但const更快。 可能只是略有一点。 问题是,是否有任何情况你应该更喜欢const不是readonly ? 或者重新说一下,使用readonly而不是const (请记住上面说的烘焙事件),我们实际上总是更好吗?