2009-10-23 40 views
19

tôi muốn tuyên bố một danh sách có chứa các loại cơ bản:Tuyên bố một danh sách các loại

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

có thể như vậy?

+0

Bạn đang sử dụng cái này để làm gì? –

+0

Tôi đang làm việc trên một tập hợp các chức năng để xác minh/xác thực dữ liệu Người dùng nhập vào một biểu mẫu. – Luiscencio

Trả lời

45

Hãy thử điều này:

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

Nhà điều hành typeof() được sử dụng để trả lại System.Type của một loại.

Đối với trường hợp đối tượng, bạn có thể gọi phương thức GetType() được kế thừa từ Đối tượng.

+4

Thay đổi khai báo để sử dụng 'var' và bạn có quyền bỏ phiếu của tôi. : P – Noldorin

+0

Một biến thể nhỏ của kịch bản cho hậu thế: nếu bạn có một đối tượng/đối tượng và muốn bao gồm loại của nó trong cùng một danh sách, hãy sử dụng thuộc tính .GetType() của đối tượng - ví dụ: xem cách sử dụng biến 'myButton' trong các mục sau: Nút myBtn = new Button(); Danh sách types = new List () {myBtn.GetType(), typeof (TextBox)}; –

+0

Nếu điều này được khai báo ở một nơi nào đó khác với loại nội dung phương thức, từ khóa var không khả dụng. Nhưng có bạn có thể (và nên) sử dụng var trong một phương pháp. –

5

Có, sử dụng List<System.Type>

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

Để thêm các mục vào danh sách, sử dụng từ khóa typeof.

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

Tôi gặp lỗi: "Nút được nhập nhưng được sử dụng làm biến" – Luiscencio

1

Sử dụng một danh sách chung gõ:

List<Type> lt = new List<Type>(); 
13

Bạn gần như đã có mã đó. Sử dụng typeof và không chỉ tên của loại.

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

Bạn cần phải sử dụng các từ khóa typeof.

Các vấn đề liên quan