2010-06-13 22 views
5

Tôi rất ngạc nhiên khi biết rằng tham số "ref" và "out" không được đánh dấu bằng thuộc tính đặc biệt, bất chấp sự tồn tại của ParameterInfo.IsOut, ParameterInfo.IsIn (cả hai đều là false như xa như tôi có thể nhìn thấy), ParameterAttributes.In và ParameterAttributes.Out. Thay vào đó, các tham số "ref" thực sự được đại diện bởi một kiểu đặc biệt của đối tượng "Type" và tham số "out" chỉ là tham số ref với thuộc tính bổ sung (loại thuộc tính mà tôi chưa biết).Phản ánh: Cách lấy kiểu cơ bản của kiểu by-ref

Dù sao, để thực hiện đối số theo tham chiếu bạn gọi Type.MakeByRefType(), nhưng câu hỏi của tôi là, nếu bạn đã có loại theo kiểu, làm thế nào để bạn quay lại Kiểu gốc?

Gợi ý: nó không phải UnderlyingSystemType:

Type t = typeof(int); 
Console.WriteLine(t.MakeByRefType().UnderlyingSystemType==t); // FALSE 

Trả lời