声明一个类型列表

30

我想声明一个基本包含类型的列表:

List<Type> types = new List<Type>() {Button, TextBox };

这是否可能?


我正在开发一组函数来验证用户在表单中输入的数据。 - Luiscencio
5个回答

67

试试这个:

List<Type> types = new List<Type>() { typeof(Button), typeof(TextBox) };

typeof()操作符用于返回类型的System.Type

对于对象实例,您可以调用从Object继承的GetType()方法。


4
使用 var 来修改声明,你就会得到我的赞。:P - Noldorin
为了记录,以下是一个略微不同的情景:如果您有一个实例/对象,并希望在同一列表中包含其类型,请使用对象的.GetType()属性--例如,请参见以下代码中'myButton'变量的用法:Button myBtn = new Button(); List<Type> types = new List<Type>() { myBtn.GetType(), typeof(TextBox) }; - John K
如果这个声明不是在方法体内部的其他地方声明,那么var关键字是不可用的。但是在方法中,你可以(而且应该)使用var。 - Yannick Motton
23
使用var关键字修改声明,你就会得到我投反对票。:P - Yuriy Faktorovich

14

您的代码已经接近正确了。使用 typeof 而不仅仅是类型名称。

List<Type> types = new List<Type>() {typeof(Button), typeof(TextBox) };

5

是的,使用List<System.Type>

var types = new List<System.Type>();

要将项目添加到列表中,请使用 typeof 关键字。

types.Add(typeof(Button));
types.Add(typeof(CheckBox));

4
List<Type> types = new List<Type>{typeof(String), typeof(Int32) };

你需要使用 typeof 关键字。

1
使用带类型的泛型列表:
List<Type> lt = new List<Type>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接