c#3.0:使用傳遞出來的匿名型別

來源:互聯網
上載者:User

今天看了csdn上的一段視頻講解c#3.0的,雖然主講人有點口吃但我還是堅持 聽完了。裡面有一句話我引起了我的興趣,如果在結構上相同我們就可以對一個 匿名型別進行強轉。看來在關鍵時刻我們還是可以直接操作匿名型別的雖然有點 麻煩。

我們知道匿名型別實際上就是.net自動產生的一個泛型類,並且只要欄位名 相同類型相同就會使用同一個匿名型別。所以我們只要類用這個特性就可以把一 個通過參數傳遞的匿名型別進行強轉了。

public T CastAnonymous<T>(object anonymous, T anonymousType)
{
   return (T)anonymous;
}
class User
{
   public string Name { get; set; }
}
public static void Main()
{
   var u = new User{ Name = "Lucifer" };
   var a = new { a = 26; u.Name; b = false };
   Print(a);
}
public void Print(object anonymous)
{
   var a = CastAnonymous(anonymous, new { a=0, Name = "", b = false });
   Console.WriteLine{"{0} - {1} - {2}", a.a, a.Name, a.b};
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.