我有一个叫Questions(复数)的类.在这个类中有一个名为Question(单数)的枚举,看起来像这样.
public enum Question
{
Role = 2,
ProjectFunding = 3,
TotalEmployee = 4,
NumberOfServers = 5,
TopBusinessConcern = 6
}
Run Code Online (Sandbox Code Playgroud)
在Questions类中,我有一个get(int foo)函数返回一个Questions对象foo.有没有一种简单的方法从枚举中获取整数值,所以我可以做类似的事情Questions.Get(Question.Role)?
是什么区别const,并readonly和你使用一个比其他?
在C#中,有什么区别
static readonly string MyStr;
Run Code Online (Sandbox Code Playgroud)
和
const string MyStr;
Run Code Online (Sandbox Code Playgroud) 我有我的程序使用...各种常数string的,int的,double的,等...什么是存储它们的最好方法?我不认为我想要一个Enum,因为数据不是所有相同的类型,我想手动设置每个值.我应该把它们全部存放在一个空的课堂上吗?或者,还有更好的方法?
我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?
我为我之前在代码中多次明确声明的值创建了一个"const":
private static readonly int QUARTER_HOUR_COUNT = 96;
Run Code Online (Sandbox Code Playgroud)
当我为QUARTER_HOUR_COUNT搜索并替换96时,我无意中也替换了声明,因此它变为:
private static readonly int QUARTER_HOUR_COUNT = QUARTER_HOUR_COUNT;
Run Code Online (Sandbox Code Playgroud)
......但它编译了.我认为它会不允许这样做.为什么编译器接受它作为有效声明?
Const被烘焙到客户端代码中.Readonly不是.但const速度更快.可能只是略有一点.
现在的问题是,是否有过,你应该喜欢的任何场景const过readonly?或者换言之,我们实际上并不总是更好地使用readonly而不是const(记住上述烘焙的东西)?
我对Literal关键字有点困惑,为什么在F#中有必要.
阅读文档,听起来我[<Literal>]用它来定义一个常量,但是我有点困惑这个常量如何与F#中的所有其他常量不同.
可以使用Literal属性标记要作为常量的值.此属性具有将值编译为常量的效果.
当我想到一个常数时,我会想到一些不可改变的东西......
let x = "a" + "b" //this is a immutable value, its value is constant
[<Literal>]
let y = "a" + "b" //this is also a immutable value, but why is this a special constant?
Run Code Online (Sandbox Code Playgroud)
是因为"普通"F#值被懒惰地评估而且[<Literal>]不会被懒惰地评估.?他们的意思是'编译为常数'..?或者还有别的东西吗?
第一个和第二个定义之间有什么区别?
//1
private static string Mask
{
get { return "some text"; }
}
//2
private const string Mask = "some text";
Run Code Online (Sandbox Code Playgroud)
第一种和第二种方法有哪些好处?
可能重复:
const和readonly有什么区别?
因此,从我读到的,在C#中,const并且static readonly在程序执行期间都会使值不可更改.
但是,const应该使用不太可能改变的数量(例如,pi,地球半径,每加仑的窝数等).
另一方面,static readonly应该使用当前不变但可能/将来会改变的值(例如软件版本,算法中的乘数等).
我做对了吗?