欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#數(shù)據(jù)類型轉(zhuǎn)換(顯式轉(zhuǎn)型、隱式轉(zhuǎn)型、強制轉(zhuǎn)型)

 更新時間:2022年01月17日 10:09:24   作者:癡者工良  
本文詳細講解了C#數(shù)據(jù)類型轉(zhuǎn)換(顯式轉(zhuǎn)型、隱式轉(zhuǎn)型、強制轉(zhuǎn)型),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

C# 的類型轉(zhuǎn)換有顯式轉(zhuǎn)型 和 隱式轉(zhuǎn)型 兩種方式。

  • 顯式轉(zhuǎn)型:有可能引發(fā)異常、精確度丟失及其他問題的轉(zhuǎn)換方式。需要使用手段進行轉(zhuǎn)換操作。
  • 隱式轉(zhuǎn)型:不會改變原有數(shù)據(jù)精確度、引發(fā)異常,不會發(fā)生任何問題的轉(zhuǎn)換方式。由系統(tǒng)自動轉(zhuǎn)換。

不同類型的數(shù)據(jù)進行操作(加減乘除賦值等等),是需要進行 類型轉(zhuǎn)換 后,才能繼續(xù)操作。所以需要“類型轉(zhuǎn)換”。

隱式轉(zhuǎn)型

隱式轉(zhuǎn)型容易理解,當兩種或多種數(shù)據(jù)類型進行某種操作時,不需要干預,系統(tǒng)會自動進行隱式轉(zhuǎn)換。

int i = 66666;
long b = i;    //轉(zhuǎn)為 long 類型后為 b 賦值

通常情況下,多種 值類型 進行計算時,系統(tǒng)會自動進行隱式轉(zhuǎn)型,并且總是轉(zhuǎn)為范圍更大的數(shù)據(jù)類型,并且不會發(fā)生精確度變化、數(shù)字大小變化等等。

顯式轉(zhuǎn)型

問題是,但你需要把一個 long 類型的數(shù)據(jù)轉(zhuǎn)成 int 時,又或者讓 string 與 int 互轉(zhuǎn),當數(shù)據(jù)小數(shù)點太多時,這時候就必須使用顯式轉(zhuǎn)型。

在繼續(xù)下列教程前,要想說明一點。

char 是整型!

雖然char存儲的是字符而不是數(shù)字,但它的確是整型,翻回上面看一下圖,可以發(fā)現(xiàn)。

也就是說,char是可以參與算術(shù)運算的。但并不是直接參與,而是char的基礎(chǔ)值。c# 中的char值是基于Unicode的。通過Unicode,任意字符都可以解釋成數(shù)字。

一,使用 ([type]) 轉(zhuǎn)型操作符

此方法適用與值類型轉(zhuǎn)換( string屬于引用類型)

在需要轉(zhuǎn)換的變量前加上( [類型] )即可

請仔細觀察下面兩圖的差異

第二張圖中的代碼中,第二行,為 int b = (int)i;

在需要轉(zhuǎn)換的變量前使用 ([type]) 這種格式進行轉(zhuǎn)換,如(int)、(float)、(long)

注意,

此種方法只能對值類型數(shù)據(jù)進行轉(zhuǎn)換。

不應將范圍大的類型 往 小 轉(zhuǎn)換 或 將浮點型轉(zhuǎn)為整形,不能將超范圍的往小了轉(zhuǎn)。

例如 float 轉(zhuǎn)為 int,精確度會被自動丟失

輸出 666

將大于其類型范圍的數(shù)給它時,會發(fā)生溢出。

char 可以直接跟 int 或 long 使用。

int a ='1' + '3';  //小轉(zhuǎn)大
char b = (char)a;  //大轉(zhuǎn)小
int c = 'a' + '5';  //char可以直接轉(zhuǎn)為 int
注意上下例子的不同 ,int 直接轉(zhuǎn)為char,會報錯

第二,[Type].Parse()

([type]) 方法是無法在值類型、引用類型( string 類型)間轉(zhuǎn)換的。

但每種數(shù)據(jù)類型都提供一個Parse()方法,它允許把字符串轉(zhuǎn)成對應的 數(shù)值類型。

int.Parse()

float.Parse()

請看例子

string str = "666";
long i = int.Parse(str);
Console.WriteLine($"{i},{i.GetType()}");
Console.ReadKey();

(圖如)

注意,

Parse() 是專為 string 類型轉(zhuǎn)成 值類型 提供功能的!

Parse() 是為符合數(shù)字格式的 string 類型進行轉(zhuǎn)換!

下面的例子都是錯誤用法 !

Parse() 是將符合數(shù)字格式的字符串轉(zhuǎn)為數(shù)字,也就是說,

  • ( )括號內(nèi)的必須為字符串 !
  • 字符串的內(nèi)容必須為數(shù)字 !

例子 1 ( ) 括號內(nèi)的內(nèi)容不是字符串

例子 2 變量 str 的內(nèi)容不是 有效數(shù)字格式

第三,[Type].TryParse()

格式如下

  • int.TryParse()
  • float.TryParse()

.TryParse()與.Parse()相似,但是使用形式不太一樣,

[類型].TryParse(要更改的字符串,out 存儲到哪個變量); 

最重要的不同點在于,.TryParse() 在轉(zhuǎn)換失敗時,不會引發(fā)異常,而是返回 flase

例子

        string str = "666";
        int i;
        bool b = int.TryParse(str,out i);    //接收轉(zhuǎn)換結(jié)果
或者
 
        string str = "666";
        int i;
        int.TryParse(str,out i);    //不接收轉(zhuǎn)換結(jié)果

如果你不知道 out 的使用,請查閱C#中的out參數(shù)/ref參數(shù)/params可變參數(shù)

第四,System.Convert

方法例子

System.Convert.ToSingle();

System.Convert.ToInt32();

System.Convert.ToDouble();

System.Convert 允許將一種類型轉(zhuǎn)為另一種類型。

常見 類型列表: char、sbyte、short、int、long、uint、ulong、float、double、decimal、string、bool ... ...

但是,同樣需要格式支持!

string str = "666";
int a= System.Convert.ToInt32(str);        //正確
 
string str = "666.66";
int a= System.Convert.ToInt32(str);        //報錯
 
int a = 66666;
bool c = System.Convert.ToBoolean(a);        //正確
 
string str = "666.66";
bool c = System.Convert.ToBoolean(str);        //報錯

System.Convert 在轉(zhuǎn)換是也需要注意 格式 才能轉(zhuǎn)換成功。

同樣,此方式也會發(fā)生精確度、數(shù)字大小改變

 

第五,System.Convert

.Tostring()

每種數(shù)據(jù)類型都提供了轉(zhuǎn)為字符串類型的方法 ToString()

無論是值類型還是DateTime 等各種引用類型。

ToString()使用方法最為簡單,請留意下列例子的紅色背景部分

using System;
using System.IO;

public class Test
{

    static void Main()
    {
        int a = 666;
        string aa = a.ToString();
        Console.WriteLine($"{aa}");

        float b = 666.666F;
        string bb = b.ToString();
        Console.WriteLine($"{bb}");

        DateTime c = DateTime.Now;
        string cc = c.ToString();
        Console.WriteLine($"{cc}");

        FileInfo d = new FileInfo("E:\\test.txt");
        string dd = d.ToString();
        Console.WriteLine($"{dd}");

        string ee;
        try
        {
            int x = 1;
            int y = 0;
            int e = x / y;
        }
        catch (Exception ex)
        {
            ee = ex.ToString();
            Console.WriteLine($"{ee}");
        }


        Console.ReadKey();
    }

}

看到了吧?無論什么類型,只需在后面加上 ToString() , 都能 輸出 string 類型的內(nèi)容。(不是轉(zhuǎn)為 string 類型?。?/p>

當然,ToString() 是一個方法,并提供了 一下傳入?yún)?shù),每種類型都有幾個重載的 TOString() 方法,例如DateTime的

public string ToString(string format, IFormatProvider provider);
public string ToString(string format);
public string ToString(IFormatProvider provider);
public override string ToString();

其它方面不再贅述。

復制下列代碼到控制臺,看看輸出了什么

using System;
using System.IO;

public class Test
{

    static void Main()
    {
        int a = 666;
        string aa = a.ToString();
        Console.WriteLine($"{aa}");

        float b = 666.666F;
        string bb = b.ToString();
        Console.WriteLine($"{bb}");

        DateTime c = DateTime.Now;
        string cc = c.ToString();
        Console.WriteLine($"{cc}");

        FileInfo d = new FileInfo("E:\\test.txt");
        string dd = d.ToString();
        Console.WriteLine($"{dd}");

        string ee;
        try
        {
            int x = 1;
            int y = 0;
            int e = x / y;
        }
        catch (Exception ex)
        {
            ee = ex.ToString();
            Console.WriteLine($"{ee}");
        }


        Console.ReadKey();
    }

}

到此這篇關(guān)于C#數(shù)據(jù)類型轉(zhuǎn)換(顯式轉(zhuǎn)型、隱式轉(zhuǎn)型、強制轉(zhuǎn)型)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論