2014-09-19 7 views
1

Can кажется странным, но есть способ, чтобы объявить или преобразовать переменную Constante что-то вроде:преобразования переменной постоянной

string myVariable = "MyString"; 
const string myConstant = myVariable ; 

Мне нужно это, чтобы ответить на мою проблему: linq to sql startwith performance indexed columns

спасибо

+0

Если константа действительно постоянна, то почему бы вам нужно установить его в переменную? – mason

+2

«Могу ли я установить константу для чего-то, что не является постоянным?» Um ... No. –

+0

'const' - константа времени компиляции, для этого требуется значение постоянной времени компиляции. Может быть, вы можете использовать поле 'readonly'. – Habib

ответ

3

не существует никакого способа сделать это для Const значений Уст сжигаются непосредственно в колл-сайта во время компиляции, Вместо этого вы могли бы сделать его readonly и назначить его в конструкторе

что-то вроде

string myVariable = "MyString"; 
readonly string myConstant="test" ; 
public MyClass() 
{ 
myConstant= myVariable ; 
} 
1

Нет, вы не можете инициализировать константу, используя значение переменной.

Константы должны быть известны во время компиляции, а значение переменной неизвестно до времени выполнения, что делает ее концептуально невозможной.

0

Нет, вы не можете использовать переменную для инициализации поля. Компилятор может переупорядочить порядок, в котором они инициализированы, сначала можно инициализировать myConstant, и в этом случае myVariable не будет установлен. не

0

Константы не могут меняться, потому что они не являются переменными, устанавливая его в переменную, которая будет меняться. Таким образом, ответ, по крайней мере, не во время выполнения.

Возможно, вы просто хотите что-то, что не может быть установлено много мест, тогда readonly может работать.

ссылка: http://msdn.microsoft.com/en-us/library/acdd6hb7.aspx

public readonly string _myROString = "set once"; 
+0

спасибо, но не работает на моем случае. Readonly - это переменная в моем коде: readonly string search = "julien"; var list = db.Users.Where (x => x.Name.StartsWith (поиск)); – Julian50

0

Этот ответ не обеспечивает решение поставленного вопроса; Но может удовлетворить требование для некоторых зрителей, которые хотели бы получить доступ к строке статическим способом, который должен быть добавлен с другими строками,

public enum NameTypes 
{ 
    First, Last 
} 

public static class UserDetails 
{ 
    public static string NameText = "Name Info: " + NameTypes.First.ToString(); 
} 
Смежные вопросы