提问人:Aloner0509 提问时间:10/30/2023 最后编辑:Ken WhiteAloner0509 更新时间:10/30/2023 访问量:54
在 if-else 语句中初始化泛型对象
Initialize an generic object in if-else statement
问:
我需要创建一个类型取决于用户选择的通用对象。我从单选按钮中得到它。这是我想象中的一个想法:
Class<null> object;
if (radioInteger.Checked == true)
{
object = new Class<int>();
}
if (radioFloat.Checked == true)
{
object list = new Class<float>();
}
if (radioString.Checked == true)
{
object list = new Class<String>();
}
//do smth with object
如何使用 C# 做到这一点?
我试图将类型放在变量中,然后将其放在<>之间,但编译器说我放置变量而不是类型。
答:
0赞
Dave Cousineau
10/30/2023
#1
如果在编译时不知道类型,则必须使用类型 object/instance 而不是类型 argument/generic 来构造对象。查看 的非泛型重载。Activator.CreateInstance
请注意,最好在编译时就知道类型,因为这样,例如,您可以将其限制为具有默认构造函数的类型。否则,使用非泛型调用时,如果没有合适的构造函数来调用,则可能会出现异常。不过,这完全取决于您的特定设计。Activator.CreateInstance
评论
Class<T>
abstract class Class{} ... class Class<T>:Class{}
Class
Class<T>