gpt4 book ai didi

c# - null 和 (type)null 有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 00:59:53 26 4
gpt4 key购买 nike

注意:这不是重复的。 This question问为什么甚至可以转换为 null,我的问题是 null(type)null 之间的区别是什么。


this引用(来自MSDN C#引用),据说这段代码:

expression as type 

等同于此代码(“除了 expression 变量只计算一次”):

expression is type ? (type)expression : (type)null  

这让我想知道,null casting 有什么意义?这与以下内容有何不同:

expression is type ? (type)expression : null  

谢谢!

最佳答案

看看这个示例项目:

static void Main(string[] args)
{
//Error: The call is ambigious between the following methods or properties: ShowMessage(FirstClass), ShowMessage(SecondClass)
ShowMessage(null);
//Here it is known which type is being used
ShowMessage((FirstClass)null);
}

private static void ShowMessage(FirstClass value)
{
System.Console.WriteLine(value);
}

private static void ShowMessage(SecondClass value)
{
System.Console.WriteLine(value.ToString());
}

class FirstClass { }
class SecondClass { }

因此,null(FirstClass)null 是不一样的。使用 (FirstClass)null,您可以将其显式定义为可空类型 FirstClass(class 作为引用类型可为空),即 null。另一个 null 只是......好吧 null 并且必须隐式转换为所需的可空类型。

注意:如果你要更换

ShowMessage(NotFirstClassObj as FirstClass)

ShowMessage(NotFirstClassObj is Firstclass ? (FirstClass)NotFirstClassObj : null)

它仍然有效,因为编译器仍然可以派生出正确的类型。但这可能是它在纪录片中为 (type)null 的原因。

关于c# - null 和 (type)null 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52220632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com