C#一些新特性Object,var,dynamic,asynchronous

來源:互聯網
上載者:User

 dynamic英音:[dai'næmik]美音:[daɪ'næmɪk]

  

asynchronous英音:[ei'siŋkrənəs]美音:[e'sɪŋkrənəs]

  

VAR 是3.5新出的一個定義變數的類型其實也就是弱化類型的定義VAR可代替任何類型編譯器會根據上下文來判斷你到底是想用什麼類型的至於什麼情況下用到VAR   我想就是你無法確定自己將用的是什麼類型就可以使用VAR     類似 OBJECT但是效率比OBJECT高點使用var定義變數時有以下四個特點:1. 必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:var s;s = “abcd”;2. 一但初始化完成,就不能再給變數賦與初始化實值型別不同的值了。3.   var要求是局部變數。4.   使用var定義變數和object不同,它在效率上和使用強型別方式定義變數完全一樣。

 

 

var表示“變數的類型是在編譯時間決定的”,但是dynamic表示“變數的類型是在運行時決定的”。因此,dynamic與var具有截然不同的含義。

  var讓你在初始設定變數時少輸入一些字,編譯器會根據右值來推斷出變數的類型。dynamic更厲害,它告訴編譯器,根本就別理究竟是啥類型,運行時再推斷不遲。

  var只能用於局部變數的定義,你不能把類的屬性定義成 var,也不能把方法的傳回值類型或者是參數類型定義成var。dynamic就沒有這些局限了。

  dynamic類型並沒有跳過類型校正,只是延遲到了運行時。如果在運行時,檢測到類型不相容,照樣會拋出異常。

  你可能在以下情況下使用dynamic:

  1.COM對象

  2.動態語言(如IronPython,IronRuby等)對象

  3.反射對象

  4.C# 4.0中動態建立的對象

 

  dynamic d = new _Default();

  d.MyMethod(22); // 方法調用

  d.A = d.B; // 屬性賦值

  d[“one”] = d[“two”]; // 索引器賦值

  int i = d + 100; // 運算子調用

  string s = d(1,2); // 委託調用

 

C#會增加更多的特性以支援非同步編程(Asynchronous Programming)。

Reflection

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.