考虑以下代码:
struct Custom<T> where T : struct { }
//...
Nullable<int> x = 2;
if(x is int z) { } //compiles
Custom<int> a = 2;
if(a is int b) { } //CS8121 An expression of type 'Custom<int>' cannot be handled by a pattern of type 'int'.
Nullable<T>
处理T
模式的原因是什么?我可以为我的自定义结构做同样的事情吗?我已经尝试过转换运算符,但没有运气。但不确定我是否尝试过所有可能的操作员。
答案 0 :(得分:4)
Nullable<T>
处理T
模式的原因是什么?
一些编译魔术。没有定义转换运算符允许它工作(我已经测试过),只是编译器知道如何将匹配Nullable<T>
模式化为T
。