Tag: 初始化

用一个常数值直接进行数组初始化

每当你用C#分配一个新的数组 new T[length] 数组条目设置为T的默认null对于T是引用types或T的默认构造函数的结果,如果T是值types,则为null 。 在我的情况下,我想初始化一个Int32数组的值为-1: var myArray = new int[100]; for (int i=0; i<myArray.Length; i++) { myArray[i] = -1; } 所以在为数组保留内存之后,CLR将循环遍历新分配的内存,并将所有条目设置为default(int)= 0。之后,我的代码将所有条目设置为-1。 这使得初始化变得冗余。 JIT是否检测到这一点,并忽略初始化为0,如果不是,有没有办法直接用自定义值初始化一部分内存? 引用C#数组初始化 – 使用非默认值 ,使用Enumerable.Repeat(value, length).ToArray()是没有select的,因为Enumerable.ToArray分配一个新的数组,然后将值复制到它。

初始化string数组的选项

初始化string[]对象时有什么选项?

在JavaScript中使用init()的用法是什么?

所以,我只想知道是否有人知道JavaScript中init()语句的特殊含义和用法,从来没有真正知道,一种newb。

在java中初始化string列表的最简单方法是什么?

我正在寻找最短的方式(在代码中)来初始化string和string数组列表,即包含“s1”,“s2”,“s3”string元素的列表/数组。

什么时候应该使用initWithNibName初始化视图控制器?

什么时候应该使用init:什么时候应该使用initWithNibName:bundle:创build视图控制器时?

在初始化列表中使用“this”指针是否安全?

我有两个具有父子关系的类( Parent类“有一个” Child类),而且Child类有一个指向Parent的指针。 在构buildsubprocess时初始化父指针会很好,如下所示: class Child { public: Child (Parent* parnet_ptr_) : parent_ptr(parent_ptr_) {}; private: Parent* parent_ptr; }; class Parent { public: Parent() : child(this) {}; private: Child child; } 现在,我知道人们build议不要在初始化列表中使用this , C ++ FAQ说我会得到一个编译器警告(顺便说一句,在VS2010,我没有得到警告),但我真的很喜欢这个,然后调用一些设置函数在Parent的构造函数中。 我的问题是: 在创buildChild对象时父指针是否定义良好? 如果是这样的话,那么为什么它被认为是不好的做法,如上所述? 谢谢, 波阿斯 编辑:谢谢Timbo,这确实是一个重复 (嗯,我甚至select了相同的类名)。 所以,让我们得到一些附加价值:如何引用? 是否可以/安全地做到以下几点? : class Child { public: Child (Parent& parnet_ptr_) : parent_ptr(parent_ptr_) {}; […]

STL映射是否在插入时初始化基本types?

我有这样一个std::map : map<wstring,int> Scores; 它存储玩家的名字和分数。 当有人得分时,我会简单地做: Scores[wstrPlayerName]++; 当映射中没有元素的wstrPlayerName键wstrPlayerName它会创build一个,但是在增量之前是否初始化为零或空值,还是未定义? 我应该testing如果元素每增加一次之前是否存在?

entity framework数据库中的代码优先默认数据

如何在应用程序启动之前或生成数据库之后处理需要预先存在的数据的情况。 例如,我有一个我想在代码优先生成之后加载到数据库中的国家列表。 我该怎么做呢? 应用程序的结构如下: Repository > Service > WebMVC xml在WebMVC项目中。

移动语义和function顺序评估

假设我有以下几点: #include <memory> struct A { int x; }; class B { B(int x, std::unique_ptr<A> a); }; class C : public B { C(std::unique_ptr<A> a) : B(a->x, std::move(a)) {} }; 如果我正确理解有关“函数参数的未指定顺序”的C ++规则,则此代码是不安全的。 如果B的构造函数的第二个参数是使用移动构造函数首先构造的,那么现在包含一个nullptr ,expression式a->x将触发未定义的行为(可能是段错误)。 如果第一个参数是先构造的,那么一切都将按预期工作。 如果这是一个正常的函数调用,我们可以创build一个临时的: auto x = a->x B b{x, std::move(a)}; 但在类初始化列表中,我们没有创build临时variables的自由。 假设我不能改变B ,是否有任何可能的方法来完成上述? 即解除引用和移动一个unique_ptr在同一个函数调用expression式而不创build临时? 如果你可以改变B的构造函数,但不添加新的方法,如setX(int) ? 会有帮助吗? 谢谢

为什么Java没有像C ++那样的初始化列表?

在C ++中,可以使用初始化程序列表在构造函数开始运行之前初始化类的字段。 例如: Foo::Foo(string s, double d, int n) : name(s), weight(d), age(n) { // Empty; already handled! } 我很好奇为什么Java没有类似的function。 根据核心Java:第1卷 : C ++使用这个特殊的语法来调用字段构造函数。 在Java中,不需要它,因为对象没有子对象,只有指向其他对象的指针。 这是我的问题: 他们是什么意思,“因为物体没有子物体?” 我不明白一个子对象是什么(我试图查找它); 它们是指一个扩展超类的子类的实例吗? 至于为什么Java没有像C ++这样的初始化器列表,我会假定原因是因为所有的字段在Java中已经被默认初始化了,而且因为Java使用super关键字来调用super(或者C ++术语中的base)-class构造函数。 它是否正确?