|
|
1
157
基类构造函数在派生类构造函数之前被调用,但派生类初始化器在基类初始化器之前被调用。例如,在以下代码中:
执行顺序为:C、A、B、D。 查看这两篇msdn文章: |
|
|
2
119
基础构造函数将首先被调用。 试试看:
|
|
|
3
45
不要试图记住它,试着向自己解释必须发生什么。想象一下,你有一个名为Animal的基类和一个命名为Dog的派生类。派生类为基类添加了一些功能。因此,当执行派生类的构造函数时,基类实例必须可用(以便您可以向其添加新功能)。这就是为什么构造函数从基执行到派生,但析构函数以相反的方式执行——首先是派生析构函数,然后是基析构函数。 (这是简化的,但它应该有助于你在将来回答这个问题,而不需要实际记住这一点。) |
|
|
4
25
实际上,派生类构造函数会首先执行,但C#编译器会将对基类构造函数的调用作为派生构造函数的第一条语句插入。 所以:派生代码首先执行,但它“看起来”像是基代码首先执行。 |
|
|
5
7
正如其他人所说,基础构造函数首先被调用。然而,构造函数并不是第一件发生的事情。 假设你有这样的课程:
首先,字段初始化器将按照从派生类最多到派生类最少的顺序调用。所以第一个字段初始化器
随后,构造函数将按照相反的顺序被调用:首先
|
|
|
6
5
我会说基地 编辑请参见: 上面写着:
|
|
|
7
3
首先调用基础构造函数。但是派生类中字段的初始化器首先被调用。 呼叫顺序为
(您可以将2和3视为一个整体来构造基类。) 取自 CSharp Language Speification 5.0 :
|
|
|
8
2
Eric Lippert在对象初始化的相关问题上发表了一篇有趣的文章,解释了构造函数和字段初始化器排序的原因:
Why Do Initializers Run In The Opposite Order As Constructors? Part One
|
|
|
9
1
|
|
|
10
1
|
|
|
11
0
基础构造函数将首先被调用,否则,在你的“其他东西”必须使用由基础构造函数初始化的成员变量的情况下,你会得到编译时错误,因为你的类成员还没有初始化。 |
|
|
12
0
在子构造函数中完成任何工作之前调用base(?)。 这是真的,即使你省略了:base()(在这种情况下,会调用0参数的base构造函数。) 它的工作原理类似于java,
***例外:我可以输入super(1,2,3)。但如果我没有显式地调用super,就会调用super()。 |
|
|
13
0
构造函数调用从下往上调用(触发),并从上往下执行。因此,如果你有从继承自类A的类B继承的类C,当你创建类C的实例时,会调用C的构造函数,这反过来会调用B的指令,后者又会调用A的构造函数。现在执行A的构造函数,然后执行B的构造函数,然后执行C的构造函数。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 11 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 11 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 11 月前 |
|
|
Duck0 · 这个对象在更高的帧率下会更快吗,因为它在Update()中? 11 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 11 月前 |