我在我的代码中有以下一行:
static if (typeof(val) == string) {
代码编译时出现错误,提示Error: incompatible types for ((string) == (string)): cannot use '==' with types
。那么正确的检查变量类型的方法是什么?
我在我的代码中有以下一行:
static if (typeof(val) == string) {
代码编译时出现错误,提示Error: incompatible types for ((string) == (string)): cannot use '==' with types
。那么正确的检查变量类型的方法是什么?
==
的行为是上下文相关的,因此在is()
内部,==
可以接受一对类型作为参数,但在外部则不行?奇怪的事情,但做得很好。 - Cecil Wardis()
表达式是一种神奇的语法,与其他语法没有实际关联。它执行类型比较,并且在某些反射低级部分中也被使用(例如,有一个is(Params func == __parameters)
,它提取参数列表并声明一个新符号来保存它们,而不是传统的比较)。因此,您应该将其视为完全独立的东西,尽管与is
运算符(a is b
)共享关键字和符号,以及等式和继承is(A : some_interface)
返回true,如果A可以隐式转换为它,则适用于更多的类! - Adam D. Ruppe