亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# 類型轉(zhuǎn)換(隱式類型,顯式類型,自定義類型)

 更新時(shí)間:2024年11月29日 10:28:24   作者:呆呆小雅  
本文詳細(xì)介紹了C#中的類型轉(zhuǎn)換,包括隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換(強(qiáng)制類型轉(zhuǎn)換),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在 C# 編程的世界里,類型轉(zhuǎn)換是一項(xiàng)極為重要的操作,它能夠?qū)⒁粋€(gè)數(shù)據(jù)類型的值轉(zhuǎn)變?yōu)榱硪粋€(gè)數(shù)據(jù)類型的值,以滿足不同場(chǎng)景下的數(shù)據(jù)處理需求。C# 中的類型轉(zhuǎn)換主要可劃分為兩種不同的方式,即隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換(也常被稱作強(qiáng)制類型轉(zhuǎn)換),同時(shí)還提供了豐富的內(nèi)置類型轉(zhuǎn)換方法以及支持自定義類型轉(zhuǎn)換操作,下面將詳細(xì)展開介紹

一、隱式類型轉(zhuǎn)換

隱式類型轉(zhuǎn)換是一種無需開發(fā)者編寫額外代碼來特意指定的轉(zhuǎn)換方式,編譯器會(huì)自動(dòng)識(shí)別并完成相應(yīng)的轉(zhuǎn)換操作。這種轉(zhuǎn)換發(fā)生在將一個(gè)較小范圍的數(shù)據(jù)類型轉(zhuǎn)換為較大范圍的數(shù)據(jù)類型時(shí),編譯器基于 C# 默認(rèn)的安全轉(zhuǎn)換機(jī)制,確保轉(zhuǎn)換過程不會(huì)導(dǎo)致數(shù)據(jù)丟失。
例如,從整數(shù)類型的角度來看,從小的整數(shù)類型轉(zhuǎn)換為大的整數(shù)類型時(shí)會(huì)自動(dòng)進(jìn)行隱式轉(zhuǎn)換,像從 int 到 long 的轉(zhuǎn)換,由于 long 所能表示的數(shù)值范圍比 int 更廣泛,編譯器能夠毫無阻礙地完成這一轉(zhuǎn)換過程。再從浮點(diǎn)類型方面舉例,從 float 到 double 的轉(zhuǎn)換同樣屬于隱式轉(zhuǎn)換,因?yàn)?double 的精度和表示范圍都大于 float。

以下是一些常見的隱式轉(zhuǎn)換實(shí)例:

(一)整數(shù)類型間的隱式轉(zhuǎn)換

byte b = 10;
int i = b; // 隱式轉(zhuǎn)換,不需要顯式轉(zhuǎn)換

在上述代碼中,將 byte 類型的變量賦值給 int 類型的變量時(shí),編譯器會(huì)自動(dòng)把 byte 類型轉(zhuǎn)換為 int 類型,無需開發(fā)者手動(dòng)干預(yù)。

(二)不同整數(shù)范圍的隱式轉(zhuǎn)換

int intValue = 42;
long longValue = intValue; // 隱式轉(zhuǎn)換,從 int 到 long

這里把一個(gè) int 類型的整數(shù)值賦值給 long 類型的變量,編譯器自動(dòng)完成從 int 到 long 的轉(zhuǎn)換,因?yàn)?long 能夠容納 int 所能表示的所有數(shù)值,且范圍更大,不會(huì)出現(xiàn)數(shù)據(jù)丟失問題。

二、顯式類型轉(zhuǎn)換(強(qiáng)制類型轉(zhuǎn)換)

與隱式類型轉(zhuǎn)換不同,顯式類型轉(zhuǎn)換需要程序員在代碼中明確地指定轉(zhuǎn)換操作,也就是進(jìn)行強(qiáng)制類型轉(zhuǎn)換。當(dāng)需要將一個(gè)較大范圍的數(shù)據(jù)類型轉(zhuǎn)換為較小范圍的數(shù)據(jù)類型時(shí),或者在不同對(duì)象類型之間進(jìn)行轉(zhuǎn)換時(shí),就必須使用強(qiáng)制類型轉(zhuǎn)換符號(hào)來進(jìn)行顯式轉(zhuǎn)換了。不過需要注意的是,這種強(qiáng)制轉(zhuǎn)換很可能會(huì)造成數(shù)據(jù)丟失或精度降低的情況。

(一)整數(shù)類型間的強(qiáng)制轉(zhuǎn)換

int i = 10;
byte b = (byte)i; // 顯式轉(zhuǎn)換,需要使用強(qiáng)制類型轉(zhuǎn)換符號(hào)

在這個(gè)例子中,把 int 類型的變量賦值給 byte 類型的變量,由于 byte 的表示范圍小于 int,所以必須使用強(qiáng)制類型轉(zhuǎn)換符號(hào) (byte) 來明確告知編譯器進(jìn)行轉(zhuǎn)換,而且轉(zhuǎn)換后可能會(huì)丟失超出 byte 范圍的數(shù)據(jù)信息。

(二)浮點(diǎn)與整數(shù)類型間的強(qiáng)制轉(zhuǎn)換

double doubleValue = 3.14;
int intValue = (int)doubleValue; // 強(qiáng)制從 double 到 int,數(shù)據(jù)可能損失小數(shù)部分

上述代碼是將 double 類型的變量轉(zhuǎn)換為 int 類型,這一過程中會(huì)直接截?cái)嘈?shù)部分,只保留整數(shù)部分,從而導(dǎo)致數(shù)據(jù)的改變,也就是可能損失了原有的小數(shù)部分信息。

(三)整數(shù)與浮點(diǎn)類型間的強(qiáng)制轉(zhuǎn)換

int intValue = 42;
float floatValue = (float)intValue; // 強(qiáng)制從 int 到 float,數(shù)據(jù)可能損失精度

當(dāng)把 int 類型轉(zhuǎn)換為 float 類型時(shí),雖然 float 可以表示小數(shù),但由于其精度相較于某些整數(shù)表示可能會(huì)有所降低,所以在這種轉(zhuǎn)換中也存在數(shù)據(jù)精度變化的風(fēng)險(xiǎn)。

(四)其他類型到字符串類型的強(qiáng)制轉(zhuǎn)換

int intValue = 123;
string stringValue = intValue.ToString(); // 將 int 轉(zhuǎn)換為字符串

這里展示了將整數(shù)類型轉(zhuǎn)換為字符串類型的常見方式,通過調(diào)用對(duì)象的 ToString 方法來實(shí)現(xiàn)。

以下是一個(gè)更完整的顯式類型轉(zhuǎn)換實(shí)例:

using System;

namespace TypeConversionApplication
{
    class ExplicitConversion
    {
        static void Main(string[] args)
        {
            double d = 5673.74;
            int i;

            // 強(qiáng)制轉(zhuǎn)換 double 為 int
            i = (int)d;
            Console.WriteLine(i);
            Console.ReadKey();
        }
    }
}

當(dāng)上述代碼被編譯和執(zhí)行時(shí),會(huì)輸出 5673,這體現(xiàn)了從 double 到 int 的強(qiáng)制轉(zhuǎn)換中,小數(shù)部分被舍去的結(jié)果。

三、C# 類型轉(zhuǎn)換方法

C# 提供了一系列內(nèi)置的類型轉(zhuǎn)換方法,這些方法都定義在 System.Convert 類中,使用時(shí)需要包含 System 命名空間。它們?yōu)轭愋娃D(zhuǎn)換提供了一種相對(duì)安全的方式,因?yàn)檫@些方法能夠處理 null 值,并且在轉(zhuǎn)換無法進(jìn)行時(shí)會(huì)拋出異常,幫助開發(fā)者更好地把控轉(zhuǎn)換過程中的各種情況。

(一)各內(nèi)置轉(zhuǎn)換方法介紹

以下是 System.Convert 類中提供的部分主要類型轉(zhuǎn)換方法及其功能描述:

在這里插入圖片描述

例如,使用 Convert.ToInt32 方法將字符串轉(zhuǎn)換為整數(shù)的示例如下:

string str = "123";
int number = Convert.ToInt32(str); // 轉(zhuǎn)換成功,number 為 123

不過要是字符串不是有效的整數(shù)表示形式,像 Convert.ToInt32 這樣的方法就會(huì)拋出 FormatException 異常,提醒開發(fā)者轉(zhuǎn)換出現(xiàn)了問題。
以下是將不同類型的值轉(zhuǎn)換為字符串類型并輸出的實(shí)例:

using System;

namespace TypeConversionApplication
{
    class StringConversion
    {
        static void Main(string[] args)
        {
            // 定義一個(gè)整型變量
            int i = 75;

            // 定義一個(gè)浮點(diǎn)型變量
            float f = 53.005f;

            // 定義一個(gè)雙精度浮點(diǎn)型變量
            double d = 2345.7652;

            // 定義一個(gè)布爾型變量
            bool b = true;

            // 將整型變量轉(zhuǎn)換為字符串并輸出
            Console.WriteLine(i.ToString());

            // 將浮點(diǎn)型變量轉(zhuǎn)換為字符串并輸出
            Console.WriteLine(f.ToString());

            // 將雙精度浮點(diǎn)型變量轉(zhuǎn)換為字符串并輸出
            Console.WriteLine(d.ToString());

            // 將布爾型變量轉(zhuǎn)換為字符串并輸出
            Console.WriteLine(b.ToString());

            // 等待用戶按鍵后關(guān)閉控制臺(tái)窗口
            Console.ReadKey();
        }
    }
}

當(dāng)上述代碼被編譯和執(zhí)行時(shí),會(huì)依次輸出各變量轉(zhuǎn)換為字符串后的結(jié)果:

75
53.005
2345.7652
True

(二)不同類型轉(zhuǎn)換方法對(duì)比與使用場(chǎng)景

除了 System.Convert 類提供的轉(zhuǎn)換方法外,C# 中還有 Parse 方法和 TryParse 方法也常用于類型轉(zhuǎn)換操作,它們各有特點(diǎn)及適用場(chǎng)景。

1. 使用 Convert 類  Convert 類提供了一組靜態(tài)方法,可以在各種基本數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換,如前面提到的 Convert.ToInt32 等方法示例,它在轉(zhuǎn)換時(shí)會(huì)嘗試進(jìn)行合理的類型轉(zhuǎn)換,但如果輸入的數(shù)據(jù)不符合目標(biāo)類型的要求,就會(huì)拋出異常。

2. 使用 Parse 方法Parse 方法主要用于將字符串轉(zhuǎn)換為對(duì)應(yīng)的數(shù)值類型,不過它有個(gè)顯著特點(diǎn),就是如果轉(zhuǎn)換失敗會(huì)直接拋出異常。例如:

string str = "123.45";
double d = double.Parse(str);

這里將字符串轉(zhuǎn)換為 double 類型,如果字符串不符合 double 類型的格式要求,程序就會(huì)因異常而中斷執(zhí)行。

3. 使用 TryParse 方法  TryParse 方法與 Parse 方法類似,都是針對(duì)字符串到其他數(shù)值類型的轉(zhuǎn)換,但它不會(huì)拋出異常,而是返回一個(gè)布爾值來指示轉(zhuǎn)換是否成功。例如:

string str = "123.45";
double d;
bool success = double.TryParse(str, out d);

if (success) {
    Console.WriteLine("轉(zhuǎn)換成功: " + d);
} else {
    Console.WriteLine("轉(zhuǎn)換失敗");
}

通過這種方式,開發(fā)者可以根據(jù)返回的布爾值來靈活處理轉(zhuǎn)換成功或失敗的情況,使程序在面對(duì)可能出現(xiàn)的轉(zhuǎn)換問題時(shí)更具健壯性。

四、自定義類型轉(zhuǎn)換

C# 還賦予了開發(fā)者定義自定義類型轉(zhuǎn)換操作的能力,這可以通過在類型中使用 implicit(隱式)或 explicit(顯式)關(guān)鍵字來實(shí)現(xiàn)。以下是一個(gè)自定義類型轉(zhuǎn)換的示例:

using System;

public class Fahrenheit
{
    public double Degrees { get; set; }

    public Fahrenheit(double degrees)
    {
        Degrees = degrees;
    }

    // 隱式轉(zhuǎn)換從 Fahrenheit 到 double
    public static implicit operator double(Fahrenheit f)
    {
        return f.Degrees;
    }

    // 顯式轉(zhuǎn)換從 double 到 Fahrenheit
    public static explicit operator Fahrenheit(double d)
    {
        return new Fahrenheit(d);
    }
}

public class Program
{
    public static void Main()
    {
        Fahrenheit f = new Fahrenheit(98.6);
        Console.WriteLine("Fahrenheit object: " + f.Degrees + " degrees");

        double temp = f; // 隱式轉(zhuǎn)換
        Console.WriteLine("After implicit conversion to double: " + temp + " degrees");

        Fahrenheit newF = (Fahrenheit)temp; // 顯式轉(zhuǎn)換
        Console.WriteLine("After explicit conversion back to Fahrenheit: " + newF.Degrees + " degrees");
    }
}

在上述代碼中,定義了 Fahrenheit 類,并實(shí)現(xiàn)了從 Fahrenheit 到 double 的隱式轉(zhuǎn)換以及從 double 到 Fahrenheit 的顯式轉(zhuǎn)換。運(yùn)行這段代碼,輸出結(jié)果如下:

Fahrenheit object: 98.6 degrees
After implicit conversion to double: 98.6 degrees
After explicit conversion back to Fahrenheit: 98.6 degrees

五、類型轉(zhuǎn)換注意事項(xiàng)與總結(jié)

在進(jìn)行 C# 類型轉(zhuǎn)換時(shí),有以下幾點(diǎn)需要特別留意:

(一)隱式轉(zhuǎn)換規(guī)則

隱式轉(zhuǎn)換只能將較小范圍的數(shù)據(jù)類型轉(zhuǎn)換為較大范圍的數(shù)據(jù)類型,絕不能反過來將較大范圍的數(shù)據(jù)類型轉(zhuǎn)換為較小范圍的數(shù)據(jù)類型,否則編譯器會(huì)報(bào)錯(cuò),因?yàn)檫@樣做可能會(huì)導(dǎo)致數(shù)據(jù)丟失等不可預(yù)期的問題。

(二)顯式轉(zhuǎn)換風(fēng)險(xiǎn)

顯式轉(zhuǎn)換由于可能會(huì)導(dǎo)致數(shù)據(jù)丟失或精度降低,所以在進(jìn)行這類轉(zhuǎn)換前,需要仔細(xì)進(jìn)行數(shù)據(jù)類型的兼容性檢查,確保轉(zhuǎn)換后的結(jié)果在業(yè)務(wù)邏輯允許的誤差范圍內(nèi),避免因數(shù)據(jù)變化而引發(fā)程序邏輯錯(cuò)誤。

(三)對(duì)象類型轉(zhuǎn)換考量

對(duì)于對(duì)象類型的轉(zhuǎn)換,不僅要進(jìn)行類型轉(zhuǎn)換的兼容性檢查,還要確保轉(zhuǎn)換的安全性,防止出現(xiàn)類型不匹配或者運(yùn)行時(shí)異常等情況。

總結(jié)而言,在 C# 中,內(nèi)置的類型轉(zhuǎn)換方法主要通過隱式轉(zhuǎn)換、顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)、使用 Convert 類的方法、Parse 方法和 TryParse 方法等多種方式來實(shí)現(xiàn),它們?cè)诓煌瑪?shù)據(jù)類型之間的轉(zhuǎn)換場(chǎng)景中被廣泛應(yīng)用,開發(fā)者需要根據(jù)具體的業(yè)務(wù)需求和數(shù)據(jù)特點(diǎn),合理選擇合適的類型轉(zhuǎn)換方式,以保障程序的正確性和穩(wěn)定性。

以下是 C# 內(nèi)置類型轉(zhuǎn)換方法的詳細(xì)表格總結(jié):

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于C# 類型轉(zhuǎn)換(隱式類型,顯式類型,自定義類型)的文章就介紹到這了,更多相關(guān)C# 類型轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)工廠方法模式

    C#實(shí)現(xiàn)工廠方法模式

    這篇文章介紹了C#實(shí)現(xiàn)工廠模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C# 下載文件 刪除文件 寫入文本的實(shí)例

    C# 下載文件 刪除文件 寫入文本的實(shí)例

    下面小編就為大家分享一篇C# 下載文件 刪除文件 寫入文本的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 簡(jiǎn)述C#枚舉高級(jí)戰(zhàn)術(shù)

    簡(jiǎn)述C#枚舉高級(jí)戰(zhàn)術(shù)

    這篇文章主要介紹了簡(jiǎn)述C#枚舉高級(jí)戰(zhàn)術(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C# WinForms存儲(chǔ)過程操作數(shù)據(jù)庫的實(shí)例講解

    C# WinForms存儲(chǔ)過程操作數(shù)據(jù)庫的實(shí)例講解

    這篇文章主要介紹了C# WinForms存儲(chǔ)過程操作數(shù)據(jù)庫的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • C#中深拷貝和淺拷貝的介紹與用法

    C#中深拷貝和淺拷貝的介紹與用法

    本文詳細(xì)講解了C#中深拷貝和淺拷貝的介紹與用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#難點(diǎn)逐個(gè)擊破(1):ref參數(shù)傳遞

    C#難點(diǎn)逐個(gè)擊破(1):ref參數(shù)傳遞

    一般情況,方法的參數(shù)傳遞是通過值進(jìn)行傳遞的,另一種情況是引用傳遞,大家可以參考下。
    2010-02-02
  • 最新評(píng)論