|
|
1
9
这在VB中工作而不是在C中工作的原因与程序集无关。 WebControl的默认构造函数受到保护。 vb和c对“受保护”的含义有不同的解释。 在VB中,可以从从类派生的任何类型的任何方法访问类的受保护成员。 也就是说,vb允许此代码编译:
因为“derived1”是基,所以它可以访问“other”的受保护成员,后者也是基。 C采取了不同的观点。它不允许“横向”访问,就像vb那样。 它表示,可以通过“this”或与包含该方法的类类型相同的任何对象来访问受保护的成员。 因为这里的“foo”是在“derived1”中定义的,C只允许“foo”从“derived1”实例访问“base”成员。“其他”可能不是“派生的1”(例如,它可以是“派生的2”),因此它不允许访问“m_x”。 在您的代码中,vb允许“侧向”访问“webcontrol”构造函数。 但是,C没有。 |
|
|
2
2
WebControl(隐式在VB行中)的默认构造函数是使用范围。您可以在C和vb.net中调用该构造函数。 |
|
|
3
1
在任何上下文中从派生类访问继承的受保护构造函数都会引发数据封装问题。 历史上,C因为第一个版本允许这样的访问。但它在2005年被修正了。派生类现在只能从自己的构造函数调用它们的受基保护的构造函数。
在vb.net中,可以通过两种方式初始化变量。首先是赋值运算符,然后是声明;其次是“as new”语句。 对于受保护的构造函数,“as new”总是可以正常工作。对于通过赋值进行初始化,它将引发编译错误。但是,如果您在基类中有多个构造函数,那么分配初始化也将工作!
可能是因为vb.net允许这种访问与遗留代码兼容。 更多细节: http://blogs.msdn.com/b/peterhal/archive/2005/06/29/434070.aspx |
|
4
0
网络控制WC= 标签 ; |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |