在C#中是否有用于多次初始化的语法快捷方式?

在C#中是否有用于多次初始化的语法快捷方式?,c#,syntax,language-features,C#,Syntax,Language Features,有没有办法做到这一点: valueType x = 1, y = 1, z = 1; 用更少的字符? e、 g.当我有大量状态需要初始化为相同的起始值时。 谢谢 你可以试试 int x, y, z; x = y = z = 1; 但我看不出这对你有什么帮助。。。如果你有很多变量,你必须初始化为相同的东西,你可以考虑使用某种类型的集合: var myInts = new List<int>(); for (int i = 0; i < 1000; i++) myInt

有没有办法做到这一点:

valueType x = 1, y = 1, z = 1;
用更少的字符?
e、 g.当我有大量状态需要初始化为相同的起始值时。
谢谢

你可以试试

int x, y, z;
x = y = z = 1;
但我看不出这对你有什么帮助。。。如果你有很多变量,你必须初始化为相同的东西,你可以考虑使用某种类型的集合:

var myInts = new List<int>();
for (int i = 0; i < 1000; i++)
    myInts.Add(1);
var myInts=new List();
对于(int i=0;i<1000;i++)
增加(1);

如果起始值为零,并且它们是类的成员(不是局部变量),则不需要显式地将它们初始化为零

否则,不会


使用数组而不是大量的参数有意义吗?

一般来说,我认为最好将每个声明分开。它倾向于使以后更容易改变

特别是当许多变量倾向于建议将它们组合到另一个对象中时

所以我倾向于

valueType  x = IntialValue;
valueType  y = IntialValue;
valueType  z = IntialValue;
等等。

让我们假设您的所有“变量”实际上都是POCO(普通的旧CLR对象,即,除了保存数据之外没有任何用途的对象)的字段

在这种情况下,您可以执行以下操作:

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

但是请注意,这段代码没有经过优化,对并发性也不是很友好。

如果可以的话,我试图避免整个键入x两次!这是27个字符-比他最初拥有的多了3个字符,另外我确信一些变量的名称比那些示例长得多。这是一个可读性比其他任何东西都高的东西,有很多状态。如果没有隐式变量声明,你要么需要键入两次(一次用于声明,一次用于赋值)或者以你第一次发布的方式。唯一的替代方法是:“int x=y=z=1;”,这是无效的。@Bruno,我的应用程序的问题是所有变量都需要名称,逻辑上是分组的,但类型不同(同一组中的所有变量都是同一类型)。我无法按状态访问它们。myVals[I]。这是我的想法,不,它们不是0。通常,我会同意,但在这种情况下,变量代表一个真实世界的对象,它本身非常复杂,拆分它会使维护和培训非常困难,而且我仍然会遇到多次初始化的问题,散开!如果变量代表真实世界的对象,则将该状态封装到。。。物体。这就是为什么我们称它们为“对象”!:-)然后,您可以在对象的构造函数中初始化它所属的状态。当然,这就是正在发生的事情!但它仍然需要初始化为非默认值。这意味着有人(我)必须做所有的手指工作…:)我试试看。在并发成为问题之前,所有的初始化都提前进行。
var myState = new State();
var t = typeof(State);
foreach (var field in t.GetFields()) {
    field.SetValue(myState, 1);
}