LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

了解C#中var、object與dynamic關(guān)鍵字

admin
2024年12月28日 21:23 本文熱度 219

前言

關(guān)鍵字是預(yù)定義的保留標(biāo)識符,對編譯器有特殊意義。C#中的關(guān)鍵字有很多,其中object、var、dynamic關(guān)鍵字是三種常見數(shù)據(jù)類型。它們可以處理多種數(shù)據(jù)類型,但各有用法、特性、優(yōu)缺點(diǎn)和適用場景。本文將了解它們的應(yīng)用與區(qū)別。

object

1、概述

object是C#的基礎(chǔ)類型,也是其他類型的基類。它是一種通用的引用類型,可以存儲任何類型的值。任何類型的數(shù)據(jù)都可以分配給object。編譯器決定它在運(yùn)行時是哪種類型,如果我們需要使用指定的類型,那首先需要顯式地(手動)轉(zhuǎn)換。

2、示例

// 定義 object objectString = "fountian";object objectInt = 100;// 顯式轉(zhuǎn)換string convertString = (string)objectString;int convertInt = (int)objectInt;
3、應(yīng)用場景

下面是一些應(yīng)用場景:

  • 與反射結(jié)合,用于動態(tài)調(diào)用方法或訪問屬性

  • 可以接受或返回任何類型方法(方法參數(shù)和返回值)

public object GetObjectData(object data){    return data;}// 通過反射獲取動態(tài)調(diào)用方法類型實(shí)例object objectInstance = GetObjectData(); // Type tagetType = objectInstance.GetType();// 獲取方法MethodInfo method = tagetType.GetMethod("Printing");// 執(zhí)行方法method.Invoke(objectInstance, null);

var

1、概述

var是C#的隱式類型推斷關(guān)鍵字,編譯器在運(yùn)行時根據(jù)變量的初始化值自動推斷變量的類型。var類型只能用于局部變量,不能用于類的字段或方法的參數(shù)和返回類型。

2、示例

// 定義 var varString = "fountian";var varInt = 100;

3、應(yīng)用場景

var主要用于簡化代碼,特別是當(dāng)變量的類型顯而易見時。下面是一些應(yīng)用場景:

  • 當(dāng)變量的類型由初始化表達(dá)式?jīng)Q定時;

  • 在for循環(huán)中循環(huán)變量;

  • 使用LINQ查詢時,查詢結(jié)果的變量;

// 列表var express = new List<string> {"ZTO","SF","JT","STO"}; // 遍歷foreach (var item in express) {    Console.WriteLine(item);}

dynamic

1、概述

dynamic是一種在運(yùn)行時進(jìn)行類型檢查和綁定的能力動態(tài)類型變量,它類似object可以在運(yùn)行時表示任何類型的值,并且可以調(diào)用該類型的成員,而無需進(jìn)行編譯時檢查。相比于object類型,使用dynamic類型時無需顯式進(jìn)行類型轉(zhuǎn)換。

2、示例

dynamic expressCode = "ZTO";dynamic expressId = 10001;string expressString = expressCode; int expressInt = expressId;// 調(diào)用方法時無需類型轉(zhuǎn)換  dynamic objectInstance = GetObjectData();  objectInstance.SomeMethod();

3、應(yīng)用場景

下面是一些應(yīng)用場景:

  • 解析 JSON 或 XML 數(shù)據(jù)等的動態(tài)數(shù)據(jù)交互

  • 動態(tài)與LINQ結(jié)合使用

// 動態(tài)與LINQ結(jié)合使用var peopleList = new List<Person>(); var people = peopleList.Where(p => p.Age < 30);foreach (var personItem in people){    Console.WriteLine(personItem.Name); }
注意:編譯時不會進(jìn)行類型檢查,可能導(dǎo)致運(yùn)行時錯誤

區(qū)別

  • object 適用于處理未知類型的數(shù)據(jù),需要進(jìn)行類型轉(zhuǎn)換;

  • var 通過隱式類型推斷類型,類型確定,則不能再改變其類型;

  • dynamic 提供了動態(tài)類型檢查和綁定的能力,無需顯式進(jìn)行類型轉(zhuǎn)換,適用于需要在運(yùn)行時進(jìn)行類型操作;


小結(jié)

object、var、dynamic 關(guān)鍵字定義的數(shù)據(jù)類型,如何選擇使用,我們需要了解它們,并根據(jù)具體需求和場景,以實(shí)現(xiàn)高效、易于維護(hù)的代碼。希望本文對您有所收獲,如有不到之處,請多多包涵。


閱讀原文:原文鏈接


該文章在 2024/12/30 15:07:26 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
综合欧美精品日韩专区 | 亚洲中文字幕精品久久久久久 | 亚洲中文在线播放 | 亚洲一区二区久久精品 | 亚洲日韩中文字幕一级乱码在线播放 | 先锋影音欧美在线 |