问题标签 [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.
c# - 对象初始化器和构造器有什么区别?
两者之间有什么区别,什么时候使用“对象初始化器”而不是“构造器”,反之亦然?如果这很重要,我正在使用 C#。此外,对象初始值设定项方法是否特定于 C# 或 .NET?
c# - 如何将项目添加到使用 { blah = "asdf" } 初始化的对象
如何将项目添加到初始化的对象:
如果我想添加另一个键值对,我会怎么做?
c# - 如何将集合初始化器语法与 ExpandoObject 一起使用?
我注意到新ExpandoObject
实现IDictionary<string,object>
具有必要条件IEnumerable<KeyValuePair<string, object>>
和Add(string, object)
方法,因此应该可以使用集合初始化器语法向 expando 对象添加属性,就像向字典添加项目一样。
但似乎没有办法做到这一点。错误:
“System.Dynamic.ExpandoObject”不包含“添加”的定义
我认为这不起作用,因为接口是显式实现的。但是有没有办法解决这个问题?这工作正常,
但集合初始值设定项语法要简洁得多。
c# - 方法参数中的简单初始化器
我构建了一个这样的流畅界面:
我可以做这样的事情:
我尝试使用 params 关键字的用户方法:
但我需要这样做:
关键是我不想在方法上写没有“新”关键字
c# - ReSharper 和对象初始化器的间距
当我尝试使用 Object Initializer 初始化对象时,ReSharper 总是会插入大量空白。
当我替换;
初始化器之后的字符时,我的代码将被格式化如下:
请按照以下步骤重现问题(谢谢 Piers Myers):
- 例如,将光标放在左大括号之后的缩进位置(在空行上,您可以将光标放在行的最开头或 Resharper/VS 认为您应该使用的缩进级别)
- 按 CTRL+空格、CTRL+ALT+空格或 SHIFT+ALT+空格。它会在光标之前插入空格以填充它,但它也会在光标之后添加相同数量的空格,这是不正确的。
有谁知道是什么导致最初生成的空白?也许我可能配置错了哪些设置?
c# - 使用初始化器创建对象数组似乎失败了
我有一个我们称之为 GM 的 GameObject。附加到它的是一个脚本,该脚本旨在成为游戏的主要逻辑控制器。
在那个脚本的某个地方,我有:
来自 dbEquipment.cs 的相关片段:
当我运行 Unity 时,我得到:
指向行:
我尝试遍历数组并将每个 clEquipment 对象初始化为一个空的 clEquipment() 首先:
只是为了完全确定数组实际上已被填充,但我得到了相同的结果。
我还尝试将其更改为List<clEquipment>
,并适当地更改所有内容-没有骰子。
有任何想法吗?
c# - 我应该使用对象初始化器还是构造器?
我刚刚了解了对象初始化器,并且想知道何时使用它们的最佳实践是什么。
这是我读到的关于它们的内容:http: //msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx 它清楚地表明它们对于创建匿名类型是必要的,但我想知道我是否应该在所有其他情况下,尽量选择它们而不是普通的构造函数。
resharper - 对象初始化器格式
Resharper 8 中的哪些设置正在像这样重新格式化我的对象初始化程序?(即在它自己的行上有逗号)。
我已经尝试了我能找到/想到的所有设置组合;我确实希望将行切掉,但我不希望逗号在自己的行上。
c# - Visual Studio 2015 缺少新关键字 - 没有编译器错误
当我犯了一个愚蠢的错误时,我正在开发我们的一个新应用程序……我忘了在对象初始化程序中写:“new ClassName”。奇怪的是 VS 只是编译了代码……没有任何错误或警告。(我用过 VS 2015,.Net 4.5.2)
我的代码:
(开始和结束都是 DateTimeValue 类型)
当我启动应用程序时,这段代码抛出了 NullReferenceException。(添加“new DateTimeValue”解决了这个问题)。为什么编译器没有错误?
python - 将命令行参数解析与对象初始化链接起来
我有一个类,它有大约十几个对象变量。除了每个变量,我还想提供一个默认值、一个帮助字符串(用于 argparse)和一个注释字符串(用于写入数据文件)。我希望能够通过以下方式实例化对象:
- 为 init 方法提供显式值
- 提供在命令行上使用的值
- 采用默认值
- 以上的一些组合。
当我只有两个对象变量时,我在 init 函数的声明中提供了默认值,我在创建参数解析器时复制了这些和帮助字符串等。但是对于许多变量,它变得非常混乱。
下面精简的示例代码是我当前的解决方案,我对此非常满意,完全符合我的要求,并且运行良好。但是,我有两个问题:
- 它是pythonic吗?
- 当然,这一定是一个已经解决的问题,并且有一种“标准”的方式来做到这一点?
我确实在这里环顾四周,并用谷歌搜索了一下,但我没有找到现有的解决方案。