2012-01-17 21 views
8

Tôi bị mắng vì cố gắng sử dụng câu hỏi từ trong tiêu đề vì vậy đây là những gì tôi nghĩ ra. Ở mức nào, đây là một câu hỏi hoàn toàn về mặt học thuật về các kiểu tham số.Một kiểu tham số đã hủy hoại Func <shui>

OK, vì vậy, đây là những gì tôi nhận được.

using System; 
namespace TypeParamTest 
{ 
    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      PrintType(1, new object()); 
      Console.ReadKey(); 
     } 
     static void PrintType<T, Ttwo>(T first, Ttwo second) 
     { 
      Console.WriteLine(typeof(T) + " : " + typeof(Ttwo)); 
     } 
    } 
} 

Đó là rõ ràng và rõ ràng với tôi (độc giả Astute sẽ nhận ra đây là một phần mở rộng đơn giản của một ví dụ được tìm thấy trên trang 249 của C# in Depth). Tôi hoàn toàn nhận được những gì đang xảy ra, trình biên dịch cho biết có một số loại (được định nghĩa cho T và sau đó cho Ttwo). Điều tôi không hiểu là tại sao ở trang 65, ví dụ chỉ có một tham số kiểu.

List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv); 

Trình biên dịch biết về T trong trường hợp này như thế nào?

+2

Tôi đang nghĩ rằng phương thức được chứa trong một lớp chung chung xác định T. – ChaosPandion

+2

+1 Câu hỏi hay, tiêu đề vững chắc. – MPelletier

Trả lời

9

Chúng tôi không có đủ thông tin để trả lời chắc chắn. Có lẽ T được định nghĩa trên lớp học xung quanh?

public class SomeClass<T> { 
    List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv); 
} 

Nếu đây là một ví dụ về phương pháp ConvertAllList<T> 's, sau đó đề nghị của tôi ở trên là trường hợp.

+0

Ah, tất cả các bạn đánh tôi quá! Tia lửa đó đã biến mất trong đầu tôi. – Kenn

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