日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# dynamic使用

發布時間:2025/3/21 C# 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# dynamic使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在通過?dynamic?類型實現的操作中,該類型的作用是繞過編譯時類型檢查,?改為在運行時解析這些操作。?dynamic?類型簡化了對 COM API(例如 Office Automation API)、動態 API(例如 IronPython 庫)和 HTML 文檔對象模型 (DOM) 的訪問。

在大多數情況下,dynamic?類型與?object?類型的行為是一樣的。?但是,不會用編譯器對包含?dynamic?類型表達式的操作進行解析或類型檢查。?編譯器將有關該操作信息打包在一起,并且該信息以后用于計算運行時操作。?在此過程中,類型?dynamic?的變量會編譯到類型?object?的變量中。?因此,類型?dynamic?只在編譯時存在,在運行時則不存在。

以下示例將類型為?dynamic?的變量與類型為?object?的變量對比。?若要在編譯時驗證每個變量的類型,請將鼠標指針放在?WriteLine?語句中的?dyn?或?obj?上。?IntelliSense 顯示了?dyn?的“動態”和?obj?的“對象”。

class Program

{

??? static void Main(string[] args)

??? {

??????? dynamic dyn = 1;

??????? object obj = 1;

??????? // Rest the mouse pointer over dyn and obj to see their

??????? // types at compile time.

??????? System.Console.WriteLine(dyn.GetType());

??????? System.Console.WriteLine(obj.GetType());

??? }

}

WriteLine?語句顯示?dyn?和?obj?的運行時類型。?此時,兩者具有相同的整數類型。?將生成以下輸出:

System.Int32

System.Int32

若要查看?dyn?和?obj?之間的差異,請在前面示例的聲明和?WriteLine?語句之間添加下列兩行之間。

dyn = dyn + 3;

obj = obj + 3;

為嘗試添加表達式?obj + 3?中的整數和對象報告編譯器錯誤。?但是,不會報告?dyn + 3?錯誤。?編譯時不會檢查包含?dyn?的表達式,原因是?dyn?的類型為?dynamic。

dynamic?關鍵字可以直接出現或作為構造類型的組件在下列情況中出現:

  • · 在聲明中,作為屬性、字段、索引器、參數、返回值或類型約束的類型。?下面的類定義在幾個不同的聲明中使用?dynamic。

class ExampleClass

{

??? // A dynamic field.

??? static dynamic field;

?

??? // A dynamic property.

??? dynamic prop { get; set; }

?

??? // A dynamic return type and a dynamic paramater type.

??? public dynamic exampleMethod(dynamic d)

??? {

??????? // A dynamic local variable.

?????? ?dynamic local = "Local variable";

??????? int two = 2;

?

??????? if (d is int)

??????? {

??????????? return local;

??????? }

??????? else

??????? {

??????????? return two;

??????? }

??? }

}

?

?

  • · 在顯式類型轉換中,作為轉換的目標類型。

static void convertToDynamic()

{

??? dynamic d;

??? int i = 20;

??? d = (dynamic)i;

??? Console.WriteLine(d);

?

??? string s = "Example string.";

??? d = (dynamic)s;

??? Console.WriteLine(d);

?

??? DateTime dt = DateTime.Today;

??? d = (dynamic)dt;

??? Console.WriteLine(d);

}

// Results:

// 20

// Example string.

// 2/17/2009 9:12:00 AM

?

  • · 在以類型充當值(如?is?運算符或?as?運算符右側)或者作為?typeof?的參數成為構造類型的一部分的任何上下文中。?例如,可以在下列表達式中使用?dynamic。

int i = 8;

dynamic d;

// With the is operator.

// The dynamic type behaves like object. The following

// expression returns true unless someVar has the value null.

if (someVar is dynamic) { }

?

// With the as operator.

d = i as dynamic;

?

// With typeof, as part of a constructed type.

Console.WriteLine(typeof(List<dynamic>));

?

// The following statement causes a compiler error.

//Console.WriteLine(typeof(dynamic));

?

?

下面的示例以多個聲明使用?dynamic。?Main?也用運行時類型檢查對比編譯時類型檢查。

using System;

namespace DynamicExamples

{

??? class Program

??? {

??????? static void Main(string[] args)

??????? {

??????????? ExampleClass ec = new ExampleClass();

??????????? Console.WriteLine(ec.exampleMethod(10));

??????????? Console.WriteLine(ec.exampleMethod("value"));

?

??????????? // The following line causes a compiler error because exampleMethod

??????????? // takes only one argument.

??????????? //Console.WriteLine(ec.exampleMethod(10, 4));

?

??????????? dynamic dynamic_ec = new ExampleClass();

??????????? Console.WriteLine(dynamic_ec.exampleMethod(10));

?

??????????? // Because dynamic_ec is dynamic, the following call to exampleMethod

??????????? // with two arguments does not produce an error at compile time.

??????????? // However, itdoes cause a run-time error.

??????????? //Console.WriteLine(dynamic_ec.exampleMethod(10, 4));

??????? }

??? }

?

??? class ExampleClass

??? {

??????? static dynamic field;

??????? dynamic prop { get; set; }

?

??????? public dynamic exampleMethod(dynamic d)

??????? {

??????????? dynamic local = "Local variable";

??????????? int two = 2;

?

??????????? if (d is int)

??????????? {

??????????????? return local;

??????????? }

??????????? else

????? ??????{

??????????????? return two;

??????????? }

??????? }

??? }

}

// Results:

// Local variable

// 2

// Local variable

?

?

總結

以上是生活随笔為你收集整理的C# dynamic使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91爱爱·com| 亚洲午夜久久久 | 色妞综合网| 色综合啪啪 | 欧美做受69| 日本国产高清 | 无码人妻久久一区二区三区不卡 | 国产又色又爽无遮挡免费 | 欧美极品第一页 | 91丨九色丨海角社区 | 污片网站在线观看 | 欧美偷拍视频 | 综合成人 | 欧美a级大片 | 大奶骚| 日韩在线激情 | 亚洲日本色图 | 日韩亚洲欧美一区二区三区 | 久久视精品 | 色咪咪网站 | 上海毛片| 尤物自拍| 一路向西在线看 | 99久久婷婷| 国产精品自在线 | 精品视频在线免费观看 | 国产一区二区三区视频在线 | 制服丝袜第二页 | 一级黄色片在线观看 | 日韩免费毛片 | 樱桃国产成人精品视频 | 亚洲av永久无码精品国产精品 | 婷婷伊人综合中文字幕 | 久久九色| 欧美日韩在线观看一区二区 | 黄色香蕉网站 | 123成人网| 亚洲视频中文字幕在线观看 | 久久亚洲AV无码专区成人国产 | 无码aⅴ精品一区二区三区 精品久久在线 | 亚洲欧美精选 | 爱爱综合网 | 狠狠综合久久av一区二区 | 免费看黄网站在线观看 | 国产精品久久久久久人妻精品动漫 | 久久人爽 | 色呦呦在线免费观看 | 97天天操| 特大黑人巨交性xxxx | 成人啪啪18免费游戏链接 | www成人啪啪18软件 | 欧美交| 久久一区二区三 | 日韩一区二区a片免费观看 伊人网综合在线 | 国内毛片毛片毛片毛片毛片 | 久久男人视频 | 黄色裸体片 | 日韩中文字幕精品视频 | 男女黄床上色视频 | 麻豆视频在线播放 | 欧美国产在线观看 | 亚洲久久久久久 | 免费成人深夜夜 | 色黄视频网站 | 大香伊人中文字幕精品 | 日韩精品无码一区二区三区久久久 | 午夜在线视频 | 三级无遮挡 | 很很干很很日 | a在线看 | 色婷婷av在线 | 国产日韩欧美综合在线 | 久久久久少妇 | 亚洲AV无码久久精品国产一区 | 奇米第四色影视 | 同性色老头性xxxx老头 | 国产精品一区在线观看 | 欧美日韩中文字幕在线 | 人妻视频一区二区 | 久久av导航| 亚洲乱强伦 | 欧美性生交大片免费看 | 丰满人妻一区二区三区大胸 | 欧美人与禽zoz0性3d | 日本乱偷中文字幕 | ass日本寡妇pics| 综合图区亚洲 | 91高跟黑色丝袜呻吟在线观看 | 精品视频在线观看一区二区 | 精品人妻一区二区三区潮喷在线 | 九九色网站 | 无罩大乳的熟妇正在播放 | 雷电将军和丘丘人繁衍后代视频 | 91理论片| 欧美一区二区三区久久久 | 国产精品99无码一区二区 | 九一亚洲精品 | 日韩亚洲视频 | 久久福利小视频 |