Cú pháp của một hàm tạo mặc định cho một lớp chung là gì?


87

Có bị cấm trong C # triển khai một phương thức khởi tạo mặc định cho một lớp chung không?

Nếu không, tại sao đoạn mã dưới đây không biên dịch? (Khi tôi xóa <T>nó sẽ biên dịch)

Cách chính xác để xác định một phương thức khởi tạo mặc định cho một lớp chung chung là gì?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

Lỗi thời gian biên dịch : Lỗi 1 Mã thông báo không hợp lệ '(' trong khai báo thành viên lớp, cấu trúc hoặc giao diện

Câu trả lời:


145

Bạn không cung cấp tham số kiểu trong hàm tạo. Đây là cách bạn nên làm.

public class Cell<T> 
{
    public Cell()
    {
    }
}

11

Và nếu bạn cần Loại làm thuộc tính:

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}

6

Và nếu bạn cần đưa vào một phiên bản của loại:

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.