gpt4 book ai didi

c# - 为什么不能使用 'as' 运算符来解析不可为空的值类型?

转载 作者:太空狗 更新时间:2023-10-30 00:31:37 24 4
gpt4 key购买 nike

每个开发人员都有自己的标准。一些开发人员喜欢 <type>.TryParse() ,一些开发人员喜欢使用 (type)object; 进行转换,而一些开发人员喜欢改用关键字。

我注意到 'as' 出现问题运算符 - 您不能使用它在不可为 null 的值类型之间执行转换。我阅读了有关 as 关键字的 MSDN 文档,他们还将其解释为“您可以使用 as 运算符在兼容的引用类型或可空类型之间执行某些类型的转换。”

我用以下方法测试了这个:

                    int i = 0;
var k = i as int; //Breaks

int i = 0;
var k = i as int?; //Works

决定 as 的原因是什么?以这种方式执行的关键字?

最佳答案

as运算符将返回 null如果解析失败。自 int是不可为空的值类型,则会出现错误,而 int?Nullable<int>可以装null值,这就是您的第二个代码片段起作用的原因。

参见:as (C# Reference)

You can use the as operator to perform certain types of conversions between compatible reference types or nullable types

也来自同一个doc link

The as operator is like a cast operation. However, if the conversion isn't possible, as returns null instead of raising an exception.

关于c# - 为什么不能使用 'as' 运算符来解析不可为空的值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265139/

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