问题标签 [object-initializer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
90789 浏览

c# - 对象初始化器和构造器有什么区别?

两者之间有什么区别,什么时候使用“对象初始化器”而不是“构造器”,反之亦然?如果这很重要,我正在使用 C#。此外,对象初始值设定项方法是否特定于 C# 或 .NET?

0 投票
3 回答
184 浏览

c# - 如何将项目添加到使用 { blah = "asdf" } 初始化的对象

如何将项目添加到初始化的对象:

如果我想添加另一个键值对,我会怎么做?

0 投票
6 回答
5000 浏览

c# - 如何将集合初始化器语法与 ExpandoObject 一起使用?

我注意到新ExpandoObject实现IDictionary<string,object>具有必要条件IEnumerable<KeyValuePair<string, object>>Add(string, object)方法,因此应该可以使用集合初始化器语法向 expando 对象添加属性,就像向字典添加项目一样。

但似乎没有办法做到这一点。错误:

“System.Dynamic.ExpandoObject”不包含“添加”的定义

我认为这不起作用,因为接口是显式实现的。但是有没有办法解决这个问题?这工作正常,

但集合初始值设定项语法要简洁得多。

0 投票
3 回答
81 浏览

c# - 方法参数中的简单初始化器

我构建了一个这样的流畅界面:

我可以做这样的事情:

我尝试使用 params 关键字的用户方法:

但我需要这样做:

关键是我不想在方法上写没有“新”关键字

0 投票
1 回答
590 浏览

c# - ReSharper 和对象初始化器的间距

当我尝试使用 Object Initializer 初始化对象时,ReSharper 总是会插入大量空白。

当我替换;初始化器之后的字符时,我的代码将被格式化如下:

请按照以下步骤重现问题(谢谢 Piers Myers):

  • 例如,将光标放在左大括号之后的缩进位置(在空行上,您可以将光标放在行的最开头或 Resharper/VS 认为您应该使用的缩进级别)
  • 按 CTRL+空格、CTRL+ALT+空格或 SHIFT+ALT+空格。它会在光标之前插入空格以填充它,但它也会在光标之后添加相同数量的空格,这是不正确的。

有谁知道是什么导致最初生成的空白?也许我可能配置错了哪些设置?

0 投票
2 回答
162 浏览

c# - 使用初始化器创建对象数组似乎失败了

我有一个我们称之为 GM 的 GameObject。附加到它的是一个脚本,该脚本旨在成为游戏的主要逻辑控制器。

在那个脚本的某个地方,我有:

来自 dbEquipment.cs 的相关片段:

当我运行 Unity 时,我得到:

指向行:

我尝试遍历数组并将每个 clEquipment 对象初始化为一个空的 clEquipment() 首先:

只是为了完全确定数组实际上已被填充,但我得到了相同的结果。

我还尝试将其更改为List<clEquipment>,并适当地更改所有内容-没有骰子。

有任何想法吗?

0 投票
4 回答
13890 浏览

c# - 我应该使用对象初始化器还是构造器?

我刚刚了解了对象初始化器,并且想知道何时使用它们的最佳实践是什么。

这是我读到的关于它们的内容:http: //msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx 它清楚地表明它们对于创建匿名类型是必要的,但我想知道我是否应该在所有其他情况下,尽量选择它们而不是普通的构造函数。

0 投票
1 回答
240 浏览

resharper - 对象初始化器格式

Resharper 8 中的哪些设置正在像这样重新格式化我的对象初始化程序?(即在它自己的行上有逗号)。

我已经尝试了我能找到/想到的所有设置组合;我确实希望将行切掉,但我不希望逗号在自己的行上。

0 投票
2 回答
197 浏览

c# - Visual Studio 2015 缺少新关键字 - 没有编译器错误

当我犯了一个愚蠢的错误时,我正在开发我们的一个新应用程序……我忘了在对象初始化程序中写:“new ClassName”。奇怪的是 VS 只是编译了代码……没有任何错误或警告。(我用过 VS 2015,.Net 4.5.2)

我的代码:

(开始和结束都是 DateTimeValue 类型)

当我启动应用程序时,这段代码抛出了 NullReferenceException。(添加“new DateTimeValue”解决了这个问题)。为什么编译器没有错误?

0 投票
1 回答
453 浏览

python - 将命令行参数解析与对象初始化链接起来

我有一个类,它有大约十几个对象变量。除了每个变量,我还想提供一个默认值、一个帮助字符串(用于 argparse)和一个注释字符串(用于写入数据文件)。我希望能够通过以下方式实例化对象:

  1. 为 init 方法提供显式值
  2. 提供在命令行上使用的值
  3. 采用默认值
  4. 以上的一些组合。

当我只有两个对象变量时,我在 init 函数的声明中提供了默认值,我在创建参数解析器时复制了这些和帮助字符串等。但是对于许多变量,它变得非常混乱。

下面精简的示例代码是我当前的解决方案,我对此非常满意,完全符合我的要求,并且运行良好。但是,我有两个问题:

  1. 它是pythonic吗?
  2. 当然,这一定是一个已经解决的问题,并且有一种“标准”的方式来做到这一点?

我确实在这里环顾四周,并用谷歌搜索了一下,但我没有找到现有的解决方案。