jdp*_*nix 3 c# type-conversion
在考虑C#中的isvs as时,您可以使用其中一个来确认某个类型是否可以转换为其他类型.
// using is
Employee e = new Manager();
if (e is Manager) {
var m = (Manager) e;
// m is now type `Manager`
}
// using as
Employee e = new Manager();
Manager m = e as Manager;
// m is now type `Manager`
if (m != null) {
}
Run Code Online (Sandbox Code Playgroud)
我理解这两个操作符的工作方式以及如何使用它们.考虑is操作员在as检查一次时检查类型两次,并且它们对它们支持的转换类型有相同的限制,是否有令人信服的理由使用is?
标记的副本是询问两个运算符之间的区别.我的问题是具体问"理解两者的作用,为什么要使用is?" 它们不是同一个问题,也没有相同的答案.
Mic*_*Liu 12
您必须使用is而不是as目标类型是非可空值类型时:
object obj = 0;
int i = obj as int; // compilation error because int can't represent null
if (obj is int)
{
int j = (int)obj; // works
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |