我有这段代码。这个类是通用的,当我通过传递一个字符串类型来实例化它时,变量会变成字符串类型。然而,这个语句
if(_val is String){
}
似乎不是真的。有什么想法吗?
这是完整的代码:
class foo<T>{
T _val;
QVar()
{
//Read the value from preferences
if(_val is String){
... //Does not come in here!!
}
}
}
a = new foo<String>();
if(_val is String)
而不是if(T is String)
。大多数编译器会提供一些警告/错误,指出类似于“T是一种类型,但正在被用作值”。此后,编译器将推断_val
的类型仅在if
块内为String
。 - ethaneas
运算符。https://www.dartlang.org/guides/language/language-tour#type-test-operators - ethane