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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.