这些代码有什么区别?
public class MyClass
{
object myObject;
public MyClass()
{
myObject = new Label();
(myObject as Label).Width = 100;
}
}
Run Code Online (Sandbox Code Playgroud)
和:
public class MyClass
{
object myObject;
public MyClass()
{
myObject = new object();
(myObject as Label).Width = 100;
}
}
Run Code Online (Sandbox Code Playgroud)
在他们两个中都需要施放并且不会发生错误.
没有发生编译时错误.在第二个代码块的运行时,你会得到一个异常,即一个object真的不是a Label并且不能这样生成.
因为每种.NET类型都继承自object,所以您可以为您的object myObject;字段分配任何类型.在第一个代码块中,Label为其分配了一个实例.您可以将其强制转换为标签(myObject as Label),因为您实际上已将其存储Label在其中.
您的第二代码例如存储有object,这是不一个Label,因此它不能被铸造.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |