“女儿家;和“;as"c#中的操作符

本文关键字:女儿家 操作符 as quot | 更新日期: 2023-09-27 18:06:29

如果c#中的as操作符只能用于引用和可空类型,那么is操作符是否同样有效?

“女儿家;和“;as"c#中的操作符

不完全是。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);