Tag: 初始化

可以混合对象初始化器和集合初始化器吗?

我按照此处的说明使用IEnumerable定义了一个集合初始化程序: http : //msdn.microsoft.com/en-us/library/bb384062.aspx 现在我可以在我的集合初始化程序中创建对象,并且我们可以像我这样添加Add()方法: class ArrangedPanel : RectElement { private List arrangedChildren = new List(); public int Padding = 2; public void Add(RectElement element) { arrangedChildren.Add(element); //do custom stuff here } public IEnumerator GetEnumerator() { return arrangedChildren.GetEnumerator(); } } // Somewhere debugPanel.Add(new ArrangedPanel() { new ButtonToggle(), new ButtonToggle() }); 但是,如果我尝试设置属性,例如我的“填充”字段,我会在集合初始值设定项上出错。 debugPanel.Add(new ArrangedPanel() { Padding […]

以LINQ方式初始化Jagged数组

我有一个二维锯齿状数组(虽然它总是矩形),我使用传统的循环初始化: var myArr = new double[rowCount][]; for (int i = 0; i < rowCount; i++) { myArr[i] = new double[colCount]; } 我想也许一些LINQ函数会在一个语句中给我一个优雅的方法来做到这一点。 但是,我能想出的最接近的是: double[][] myArr = Enumerable.Repeat(new double[colCount], rowCount).ToArray(); 问题是它似乎正在创建一个double[colCount]并为每行分配一个新数组的intsead分配引用。 有没有办法做到这一点,而不是太神秘?

在C#中初始化静态变量内联或静态构造函数的差异

我想知道初始化内联静态成员有什么区别,如: class Foo { private static Bar bar_ = new Bar(); } 或者在静态构造函数中初始化它,如: class Foo { static Foo() { bar_ = new Bar(); } private static Bar bar_; }

反序列化后初始化私有只读字段

我需要在反序列化后初始化私有只读字段。 我有以下DataContract: [DataContract] public class Item { public Item() { // Constructor not called at Deserialization // because of FormatterServices.GetUninitializedObject is used // so field will not be initialized by constructor at Deserialization _privateReadonlyField = new object(); } // Initialization will not be called at Deserialization (same reason as for constructor) private readonly object _privateReadonlyField […]

将数组的值分配给一行中的变量

我可以将数组中的每个值分配给C#中的一行中的变量吗? 这是Ruby代码中我想要的一个例子: irb(main):001:0> str1, str2 = [“hey”, “now”] => [“hey”, “now”] irb(main):002:0> str1 => “hey” irb(main):003:0> str2 => “now” 我不确定我在C#中是否可能需要什么。 编辑:对于那些暗示我只是将字符串“嘿”和“现在”分配给变量的人,这不是我想要的。 想象一下: irb(main):004:0> val1, val2 = get_two_values() => [“hey”, “now”] irb(main):005:0> val1 => “hey” irb(main):006:0> val2 => “now” 现在get_two_values方法返回字符串“hey”和“now”的事实是任意的。 实际上它可以返回任何两个值,它们甚至不必是字符串。

如何将焦点设置为Windows窗体应用程序中的控件?

在Windows窗体应用程序中, 何时编写代码以在启动应用程序时以及随后在调用函数后将焦点设置为控件? 例如,如果我有一个DropDownList,一个TextBox和四个按钮,我希望将Focus设置为DropDownList,我在哪里编写代码? 要在应用程序启动时将焦点设置为特定控件,我可以将选项卡索引设置为DropDown(具有最小值,假设TabStop属性设置为True)。 现在,如果用户完成一个操作(比如任何一个Click Button事件),然后我更新了DropDown,之后如果我想设置焦点……我可以这样做 MyDropDownList.Focus() 题 NB:问题更多的是关于何处 ,而不是如何 ?

在c#中的任意起始索引上初始化数组

是否可以在c#中初始化一个数组,例如,subindex 1? 我正在使用Office互操作,并且每个属性都是一个从1开始的对象数组(我假设它最初是在VB.NET中编写的),你不能修改它,你必须设置整个数组才能接受它变化。 作为一种解决方法,我正在克隆原始数组,修改那个数组,并在完成后将其设置为整体。 但是,我想知道是否有可能创建一个新的非零基数组

InitializeComponent()的非常简单的定义; 方法

我一直在使用Head First C#书并使用了InitializeComponent(); 方法好几次。 这方面的一个例子是在Party Planner练习中我创建了一个名为DinnerParty.cs的类,然后在Form1.cs中使用了这个代码。 public Form1() { InitializeComponent(); dinnerParty = new DinnerParty() { NumberOfPeople = 5 }; dinnerParty.SetHealthyOption(checkBox2.Checked); dinnerParty.CalculateCostOfDecorations(checkBox1.Checked); DisplayDinnerPartyCost(); } 我的问题是,Initialize Component方法到底是做什么的。 我的理解是我定义了一个新的对象或DinnerParty类的实例并设置了所有值,到目前为止我假设InitializeComponent()有点说“使用以下内容设置我的字段的值:” 我可以请一个BASIC,我可以理解我的定义。 我已经看过以前关于此的post和答案,一切都太复杂了。 我将标记最容易理解的响应,仍然有关键信息作为答案。