可能看起来很奇怪,但是有一种方法可以声明或将变量转换为常量:
string myVariable = "MyString";
const string myConstant = myVariable ;
我需要这个来回答我的问题:linq to sql startwith performance indexed columns
感谢
[没有办法对Const
做到这一点,在编译时将const值直接刻录到调用位置,相反,您可以将其设为readonly
并在构造函数中分配它
类似
string myVariable = "MyString";
readonly string myConstant="test" ;
public MyClass()
{
myConstant= myVariable ;
}
否,您不能使用变量的值初始化常量。
常量必须在编译时知道,并且变量的值要到运行时才知道,从概念上讲是不可能的。
不,您不能使用变量来初始化字段。编译器可以重新排列它们的初始化顺序,myConstant
可以先初始化,在这种情况下将不设置myVariable
。
常量不能改变,因为它们不是变量,将其设置为变量将改变它。因此,答案是至少在运行时不会。
[也许您只是想要一些不能在很多地方设置的东西,所以只读可能有效。
参考:http://msdn.microsoft.com/en-us/library/acdd6hb7.aspx
public readonly string _myROString = "set once";
不可能。但是有人找到了我最初的问题的答案,而没有给出答案。谢谢linq to sql startwith performance indexed columns
此答案不能解决所发布的问题;但可能满足某些喜欢以静态方式访问字符串并应附加其他字符串的观众的要求,
public enum NameTypes
{
First, Last
}
public static class UserDetails
{
public static string NameText = "Name Info: " + NameTypes.First.ToString();
}
否则,将您的第一个变量更改为如下常量:
const string myVariable = "MyString";
const string myConstant = myVariable ;