jjzjj

Initialization

全部标签

c# - 在显式构造函数之外初始化字段是不好的做法吗

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Initializeclassfieldsinconstructororatdeclaration?我们正在争论编码实践。这里的例子有点太简单了,但真正的交易有几个构造函数。为了初始化简单值(例如,将日期设置为最小值),我已将代码从构造函数中移出并移入字段定义中。publicclassConstructorExample{string_string="John";}publicclassConstructorExample2{string_string;publicConstructorExample2(){

c# - 如何初始化二维数组?

我有一个二维数组数组。例如,它是这样的:{{{0,0,1},{1,0,0}}{{0,0,3},{2,1,2},{2,2,1},{3,0,0}}{{0,0,7},{3,2,6},{6,2,3},{6,3,2},{7,0,0}}}但是如果我写int[,][]arrays={{{0,0,1},{1,0,0}}{{0,0,3},{2,1,2},{2,2,1},{3,0,0}}{{0,0,7},{3,2,6},{6,2,3},{6,3,2},{7,0,0}}};编译器会提示“;expected”。如果我写int[,][]arrays={newint[,]{{0,0,1},{1,0,0}}newi

c# - 可以混合对象初始值设定项和集合初始值设定项吗?

我按照此处的说明使用IEnumerable定义了一个集合初始值设定项:http://msdn.microsoft.com/en-us/library/bb384062.aspx现在我可以在我的集合初始值设定项中创建对象,并且它们是通过我的Add()方法添加的,如下所示:classArrangedPanel:RectElement{privateListarrangedChildren=newList();publicintPadding=2;publicvoidAdd(RectElementelement){arrangedChildren.Add(element);//docusto

c# - 在C#中创建二维数组的数组

我只是想创建一个二维数组的数组来存储坐标点。所以我想要一个数组,其中每个索引返回一个二维数组,我将其用作x和y。这是我尝试过的:waypoints=newint[4][,]{{{0},{6,0}},{{1},{1,1}},{{2},{1,5}},{{3},{6,5}}};我意识到这可能看起来很愚蠢,但我已经尝试在Google上查找它,但没有得到任何好的结果。报错:"errorCS0623:Arrayinitializerscanonlybeusedinavariableorfieldinitializer.Tryusinganewexpressioninstead"我也试过这样做:wa

C#变量初始化问题

我是否像这样初始化一个整数变量有什么不同吗:inti=0;inti;编译器或CLR是否将其视为同一件事?IIRC,我认为它们都被视为同一件事,但我似乎找不到这篇文章。 最佳答案 如果变量i是一个实例变量,它会被自动赋值0。如果它是方法中的局部变量,则它是未定义的,因此您需要在使用它之前为其赋值。例如:classProgram{staticvoidMain(string[]args){intTestit;it=newintTest();Console.ReadLine();}classintTest{inti;publicintTes

c# - 最短的内联集合初始值设定项? C#

编写内联集合初始值设定项的最简洁/最短方法是什么?我不关心引用名,索引就可以,item只需要在方法范围内使用即可。我认为匿名类型集合会更困惑,因为我每次都必须继续写键名。我现在有varfoo=newTuple[]{newTuple(1,"x",true),newTuple(2,"y",false)};我希望C#4.0能有一些我错过的东西。 最佳答案 最短的方法是使用Tuple.Create而不是newTuple:varfoo=new[]{Tuple.Create(1,"x",true),Tuple.Create(2,"y",fals

C# - 检查变量是否已初始化

我想检查一个变量是否在运行时以编程方式初始化。为了让这个原因不那么神秘,请看下面不完整的代码:strings;if(someCondition)s=someValue;if(someOtherCondition)s=someOtherValue;boolsIsUninitialized=/*assignvaluecorrectly*/;if(!sIsUninitialized)Console.WriteLine(s)elsethrownewException("Pleaseinitializes.");并完成相关位。一个hacky解决方案是用默认值初始化s:strings="zanzi

c# - 声明变量并使用 TryParse 在同一行对其进行初始化有任何问题吗?

这个示例是用C#编写的,但我希望可以同样轻松地应用于其他示例。我最近发现以下似乎工作得很好:inti=Int32.TryParse(SomeString,outi)?i:-1;不知何故,似乎变量i在它出现在TryParse中时在技术上不应该是可访问的。或者我假设inti有效地声明了变量是否正确,即使还没有语句结束? 最佳答案 inti声明变量,并在out参数中使用它来初始化它。由于必须在结果之前评估谓词,因此i在使用之前既已声明又已初始化。(out参数必须在返回前赋值,所以无论如何肯定是初始化了。)也就是说,我的一些同事会因为风格原

c# - 在 C# 中初始化静态变量内联或静态构造函数的区别

我想知道初始化静态成员内联有什么区别:classFoo{privatestaticBarbar_=newBar();}或在静态构造函数中初始化它,如下所示:classFoo{staticFoo(){bar_=newBar();}privatestaticBarbar_;} 最佳答案 如果您的类型中有一个静态构造函数,它会由于beforefieldinit而改变类型初始化不再应用标志。它还会影响初始化顺序-变量初始化器都在静态构造函数之前执行。据我所知,就这些。 关于c#-在C#中初始化静

c# - C# 中的菱形语法

Java7现在有了这种“菱形语法”,我可以在其中执行类似ArrayList=newArrayList();的操作我想知道C#是否具有我可以利用的类似语法。例如,我有一个类的这一部分:classMyClass{publicListPrototypes;//eachprototypeisaarrayofarrayofdoublespublicMyClass(){Prototypes=newList;//I'dratherdoList,incaseIchangetherepresentationofaprototypelater}}有谁知道这是否可行,如果可行,我该如何使用它?