Есть ли синтаксис для множественной инициализации в C #? - PullRequest
5 голосов
/ 15 января 2010

Есть ли способ сделать это:

valueType x = 1, y = 1, z = 1;

с меньшим количеством символов?
например Когда у меня есть большое количество состояния для инициализации с тем же начальным значением.
Спасибо!

Ответы [ 4 ]

11 голосов
/ 15 января 2010

Вы можете попробовать

int x, y, z;
x = y = z = 1;

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

var myInts = new List<int>();
for (int i = 0; i < 1000; i++)
    myInts.Add(1);
3 голосов
/ 15 января 2010

Если начальное значение равно нулю и они являются членами вашего класса (не локальными переменными), вам не нужно явно инициализировать их равными нулю.

В противном случае, нет.

Имеет ли смысл использовать массивы вместо большого количества параметров?

1 голос
/ 15 января 2010

в общем, я думаю, что лучше разделить каждую декларацию. Это облегчает последующее изменение.

особенно, когда множество переменных склонны предлагать их объединение в другой объект.

так что я склонен делать ...

valueType  x = IntialValue;
valueType  y = IntialValue;
valueType  z = IntialValue;

и т.д ...

0 голосов
/ 15 января 2010

Допустим, все ваши "переменные" на самом деле являются полями POCO (то есть простым старым объектом CLR, то есть объектом, который не служит цели, кроме хранения данных).

class State {
    public double pression_top;
    public double pression_bottom;
    /* hundreds and hundres of fields */
}

В этом случае вы можете сделать что-то вроде:

var myState = new State();
var t = typeof(State);
foreach (var field in t.GetFields()) {
    field.SetValue(myState, 1);
}

Обратите внимание, что этот код не оптимизирован и не очень удобен для параллелизма.

...