永久免费看黄A片无码软件,japanese 在线观看国产,强奷高H猛烈失禁潮喷播放,亚洲成精品自拍

rexian

咨詢電話:023-6276-4481

熱門文章

聯(lián)系方式

電 話:023-6276-4481

郵箱:broiling@qq.com

地址:重慶市南岸區(qū)亞太商谷6幢25-2

當前位置:網(wǎng)站首頁 > 技術(shù)文章 > NET4.0新特性動態(tài)語言

NET4.0新特性動態(tài)語言

編輯:Ethan 發(fā)表時間:2018-01-22 13:50:07
Ethan

dynamic元類型

C# 4.0將通過新的元類型"dynamic"來添加對后期綁定的支持。任何直接聲明為這種類型的變量,或者從函數(shù)中返回這種類型的值,都將自動地視為后期綁定。這類似于在Visual Basic中把變量聲明為"object",不過它現(xiàn)在可以支持任何類型系統(tǒng)了,不僅僅是CTS(通用類型規(guī)范)和COM。

一個重要之處是,這個特性的目標就是為了支持后期綁定,以及更多地為了支持近來流行的動態(tài)綁定。動態(tài)類型明顯不是C#的一個特性,不過是為了支持動態(tài)綁定的一個后果。

還要著重注意的一點是,反射并不是一種很好的替代方案。使用反射的問題在于,需要處理各種各樣的類型。使用Reflection命名空間調(diào)用方法的方式和在ScriptObject上調(diào)用方法的方式并不相同。尤其,Ruby/Python方法這樣的第三方方法。

 

dynamic ExpandoObject

熟悉js的朋友都知道js可以這么寫 :

    var t = new Object();

    t.Abc = "something";

    t.Value = 243;

現(xiàn)在這個js動態(tài)語言的特性,我們也可以在c#中使用了,前提是將一個變量聲明為ExpandoObject類型。如下例:

    static void Main(string[] args)

    {

        dynamic t = new ExpandoObject();

        t.Abc = "abc";

        t.Value = 10000;

        Console.WriteLine("t's abc = {0},t's value = {1}", t.Abc, t.Value);

        Console.ReadLine();

    }

C# 4.0中新增了一個命名空間System.Dynamic來實現(xiàn)對此應用的支持,這種用法的意義何在,現(xiàn)在我還不太清楚,也是是c#向動態(tài)語言過渡的一種試探吧。以下展示的是dynamic可變類型特性

dynamic d = 1;

Console.WriteLine(d.ToString());

d = new DateTime();

Console.WriteLine(d.ToString());

d = "szl";

Console.WriteLine(d.ToString());

 

dymanic應用場景

按New features in CSharp 4的說法,dymanic主要應用于下面的場景:

1、自動反射

2、COM組件互操作

3、混合編程,例如IronRuby和IronPython

4、處理Html DOM對象

如果有處理過上面這些工作的朋友們,應該不難理解了吧。

有了dynamic的支持讓我們看下更強大的功能吧:

 

反射調(diào)用

Type type = Type.GetType("ConsoleApplication1.Test");

dynamic t = Activator.CreateInstance(type);

t.Print("你好,szl,歡迎使用 CSharp 4.0!");

這里我們之間調(diào)用了ConsoleApplication1.Test類型中的Print方法,就行創(chuàng)建實例后調(diào)用一樣,是不是很方便。

 

P/Invoke 調(diào)用

 

dynamic user32 = new DynamicDllImport("user32.dll",

callingConvention: CallingConvention.Winapi);

user32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0);

DynamicDllImport是Mono發(fā)布的一個類,利用它我們可以直接調(diào)用WinAPI,這里調(diào)用了MessageBox函數(shù)。詳細內(nèi)容我會在下一篇文章《.NET4.0新特性之互操作》進行介紹。

 

動態(tài)語言運行

動態(tài)語言運行時 (DLR) 是一種運行時環(huán)境,它將一組適用于動態(tài)語言的服務添加到公共語言運行時 (CLR)。借助于 DLR,可以更輕松地開發(fā)要在 .NET Framework 上運行的動態(tài)語言,而且向靜態(tài)類型化語言添加動態(tài)功能也會更容易。

動態(tài)語言可以在運行時標識對象的類型,而在類似 C# 和 Visual Basic 的靜態(tài)類型化語言中(當您使用 Option Explicit On 時),您必須在設計時指定對象類型。動態(tài)語言的示例有:Lisp、Smalltalk、JavaScript、PHP、Ruby、Python、ColdFusion、Lua、Cobra 和 Groovy。

大多數(shù)動態(tài)語言都會向開發(fā)人員提供以下優(yōu)點:

可以使用快速反饋循環(huán)(REPL 或讀取-計算-打印循環(huán))。這樣,您就可以在輸入幾條語句之后立即執(zhí)行它們以查看結(jié)果。

同時支持自上而下的開發(fā)和更傳統(tǒng)的自下而上的開發(fā)。例如,當您使用自上而下的方法時,可以調(diào)用尚未實現(xiàn)的函數(shù),然后在需要時添加基礎實現(xiàn)。

更易于進行重構(gòu)和代碼修改操作,原因是您不必在代碼中四處更改靜態(tài)類型聲明。

利用動態(tài)語言可以生成優(yōu)秀的腳本語言。利用新的命令和功能,客戶可以輕松地擴展使用動態(tài)語言創(chuàng)建的應用程序。動態(tài)語言還經(jīng)常用于創(chuàng)建網(wǎng)站和測試工具、維護服務器場、開發(fā)各種實用工具以及執(zhí)行數(shù)據(jù)轉(zhuǎn)換。

DLR 的目的是允許動態(tài)語言系統(tǒng)在 .NET Framework 上運行,并為動態(tài)語言提供 .NET 互操作性。在 Visual Studio 2010 中,DLR 將動態(tài)對象引入到 C# 和 Visual Basic 中,以便這些語言能夠支持動態(tài)行為,并且可以與動態(tài)語言進行互操作。

DLR 還可幫助您創(chuàng)建支持動態(tài)操作的庫。例如,如果您具有一個使用 XML 或 JavaScript 對象表示法 (JSON) 對象的庫,則對于使用 DLR 的語言,您的對象可以顯示為動態(tài)對象。這使庫用戶能夠編寫語法更簡單且更自然的代碼,以便操作對象和訪問對象成員。