gpt4 book ai didi

c# - 什么时候int?和 Nullable 是一样的,为什么它们的行为方式不同?

转载 作者:行者123 更新时间:2023-11-30 20:30:13 24 4
gpt4 key购买 nike

考虑以下程序。我想知道为什么这段代码的行为方式不同。

这在编译期间返回错误:

void access<T>(T val, bool result){
var getaccess = val is int? & result;
}

这不会返回任何错误:

void access<T>(T val, bool result){
var getaccess = val is Nullable<int> & result;
}

最佳答案

这仅仅是因为 ?& 被重载了,也可以分别表示条件运算符和“地址”。编译器需要知道你的意思。这修复了它:

var getaccess = (val is int?) & result;

编译器消息不是完全清楚,但给了我们线索:

CS0214  Pointers and fixed size buffers may only be used in an unsafe 

(来自&result)

CS1003  Syntax error, ':' expected

(来自 ?)

和:

CS1525  Invalid expression term ';'

(这也是来自 ? 因为它期望在下一个分号之前有一个 : {value if false} 表达式)

基本上,如果没有括号,它会认为您的意思是:

var getaccess = (val is int) ? (&result)

(如果 valnot int,则缺少表达式)

关于c# - 什么时候int?和 Nullable<int> 是一样的,为什么它们的行为方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45139607/

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