“女儿家;和“;as"c#中的操作符
本文关键字:女儿家 操作符 as quot | 更新日期: 2023-09-27 18:06:29
如果c#中的as
操作符只能用于引用和可空类型,那么is
操作符是否同样有效?
不完全是。is
操作可以对任何类型使用,因为您总是可以检查与任何类型的类型相等。在语义上与
if(someVariable.GetType().IsAssignableFrom(anotherVariable.GetType()))
您可以在这里查看有关此操作的文档。
当您考虑如何实现"as"时,它变得更加清晰。如果"as"是一个函数:
public T as<T>(object obj){
if(obj is T)
{
return (T) obj;
}
else
{
return null;
}
}
如上面所示,T必须是Nullable或引用类型,否则就没有办法返回null。"is"操作符没有这个问题,因为它返回一个布尔值,因此不必担心目标是否可以表示为null。
它可以用于任何类型,因为"is"考虑装箱/拆箱。
int test = 4;
object test2 = test;
bool isTrue = (test2 is int);