2012-03-12 34 views
9

Challenge: Hãy tạo một thể hiện của lớp sau (sử dụng bất kỳ loại như T):Định nghĩa lớp chung không thể đệ quy?

class Foo<T> 
    where T : Foo<T> 
{ 
} 

Bạn có thể sử dụng bất kỳ kỹ thuật mà bạn thích; đồng bằng "MyClass mới ...", sử dụng sự phản chiếu, hack MSIL, bất cứ điều gì.

+1

Hiểu rõ những gì bạn muốn đạt được có thể giúp mọi người đưa ra câu trả lời thay thế tốt hơn. –

+1

có thể trùng lặp của [loại chung loại đệ quy] (http://stackoverflow.com/questions/647533/recursive-generic-types) – Amber

+3

Bài tập về nhà có thể có? – Carsten

Trả lời

12
static class Program { 
    static void Main() { 
     Foo<Bar> foo = new Foo<Bar>(); 
    } 
} 
class Foo<T> where T : Foo<T> {} 
class Bar : Foo<Bar> {} 
+0

Hoàn hảo ........ –

+3

Hoặc chỉ 'Thanh mới()'. –

+0

Haha thật tuyệt! Tôi thực sự không nghĩ rằng điều này là có thể! Hehe. Tôi đứng sửa. Rất tốt đẹp! :) –

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