欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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

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

前言

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

object

1、概述

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

2、示例

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

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

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

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

public object GetObjectData(object data){    return data;}// 通過(guò)反射獲取動(dòng)態(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)行時(shí)根據(jù)變量的初始化值自動(dòng)推斷變量的類型。var類型只能用于局部變量,不能用于類的字段或方法的參數(shù)和返回類型。

2、示例

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

3、應(yīng)用場(chǎng)景

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

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

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

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

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

dynamic

1、概述

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

2、示例

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

3、應(yīng)用場(chǎng)景

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

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

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

// 動(dòng)態(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); }
注意:編譯時(shí)不會(huì)進(jìn)行類型檢查,可能導(dǎo)致運(yùn)行時(shí)錯(cuò)誤

區(qū)別

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

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

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


小結(jié)

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


閱讀原文:原文鏈接


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