淺析C#數(shù)據(jù)類型轉(zhuǎn)換的幾種形式
1、Convert.ToInt32(); //轉(zhuǎn)換成32位的整數(shù)。
2、變量.ToString();/最常見的轉(zhuǎn)換成 字符串。
3、"訂單"+2514 //后面的數(shù)字會(huì)轉(zhuǎn)換為字符串。
4、((類名A)對象名X) //強(qiáng)行將 對象X 轉(zhuǎn)換成 A類 的對象。
5、int.Parse(string);把字符串型轉(zhuǎn)換成其他類型。
6、還有,如果要轉(zhuǎn)換成的類型為引用類型,還可以用 as
teacher tea = teahcer();
如 student stu = tea as student;
(1) 隱式轉(zhuǎn)換:一般是低類型向高類型轉(zhuǎn)化,能夠保證值不發(fā)生變化。
隱式數(shù)值C#數(shù)據(jù)類型轉(zhuǎn)換:
從 sbyte 到 short、int、long、float、double 或 decimal。
從 byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。
從 short 到 int、long、float、double 或 decimal。
從 ushort 到 int、uint、long、ulong、float、double 或 decimal。
從 int 到 long、float、double 或 decimal。
從 uint 到 long、ulong、float、double 或 decimal。
從 long 到 float、double 或 decimal。
從 ulong 到 float、double 或 decimal。
從 char 到 ushort、int、uint、long、ulong、float、double 或 decimal。
從 float 到 double。
不存在向 char 類型的隱式轉(zhuǎn)換,因此其它整型的值不會(huì)自動(dòng)轉(zhuǎn)換為 char 類型。
浮點(diǎn)型不能隱式地轉(zhuǎn)化為decimal型
隱式枚舉轉(zhuǎn)換
隱式枚舉轉(zhuǎn)換允許將十進(jìn)制整數(shù) 0 轉(zhuǎn)換為任何枚舉類型。
隱式引用轉(zhuǎn)換
派生類向基類轉(zhuǎn)換
隱式引用轉(zhuǎn)換是指一類引用類型之間的轉(zhuǎn)換,這種轉(zhuǎn)換總是可以成功,因此不需要在運(yùn)行時(shí)進(jìn)行任何檢查。
裝箱轉(zhuǎn)換
裝箱轉(zhuǎn)換允許將值類型隱式轉(zhuǎn)換為引用類型。
(2) 顯示轉(zhuǎn)換:也稱強(qiáng)制類型轉(zhuǎn)換。不能保證數(shù)據(jù)的正確性。
(type)(表達(dá)式)
(3) 用戶自定義C#數(shù)據(jù)類型轉(zhuǎn)換
所有的用戶自定義轉(zhuǎn)換都是靜態(tài)的,要使用static關(guān)鍵字
用戶自定義轉(zhuǎn)換分顯示和隱示,它們用implicit(隱式轉(zhuǎn)換)或 explicit(顯示轉(zhuǎn)換)關(guān)鍵字聲明。
static 訪問修辭符 轉(zhuǎn)換修辭符 operator 轉(zhuǎn)換類型(參數(shù))
C#數(shù)據(jù)類型轉(zhuǎn)換示例:
struct Number
{
private int value;
public Number(int value) { this.value=value; }
//用戶自定義整型到Number型的隱式轉(zhuǎn)換
static public implicit operator Number(int value) { return new Number(value); }
//用戶自定義從Number型到整型的顯示轉(zhuǎn)換
static public explicit operator int(Number n) { return n.value; }
//用戶自定義從Number類型到string類型的隱式轉(zhuǎn)換
static public implicit operator string(Number n) { return n.ToString(); }
}
class Test
{
static public void Main()
{
Number n;
n=10;
Console.WriteLine((int)n);
//隱式轉(zhuǎn)換到string
Console.WriteLine(n);
}
}
使用System.Convert類
將一個(gè)基本數(shù)據(jù)類型轉(zhuǎn)換為另一個(gè)基本數(shù)據(jù)類型。
使用Parse方法
大部份預(yù)定義值類型都有這個(gè)靜態(tài)方法,用來將相應(yīng)的文本轉(zhuǎn)化為相應(yīng)的值類型。
裝箱和取消裝箱
裝箱和取消裝箱使值類型能夠與 object 類型相互轉(zhuǎn)換。
裝箱轉(zhuǎn)換允許將“值類型”隱式轉(zhuǎn)換為“引用類型”。將“值類型”的值裝箱的操作包括:分配一個(gè)對象實(shí)例并將“值類型”的值復(fù)制到該實(shí)例中。
C#數(shù)據(jù)類型轉(zhuǎn)換示例:
此例將整數(shù)變量 i 通過裝箱轉(zhuǎn)換為對象 o。此例顯示對象保留了內(nèi)容的原始副本,即 123。
public static void Main()
{
int i=123;
object o=i;//隱式的裝箱
i=456;//改變變量i的值
Console.WriteLine("Thevalue-typevalue={0}",i);//456
Console.WriteLine("Theobject-typevalue={0}",o);//123是i的復(fù)制值
}
取消裝箱轉(zhuǎn)換:取消裝箱轉(zhuǎn)換允許將引用類型顯式轉(zhuǎn)換為值類型。
取消裝箱操作包括以下兩個(gè)步驟:首先檢查該對象實(shí)例是否是某個(gè)給定的值類型的裝了箱的值,然后將值從實(shí)例中復(fù)制出來。
C#數(shù)據(jù)類型轉(zhuǎn)換示例:
下面的示例闡釋無效取消裝箱的情況,即錯(cuò)誤的取消裝箱如何導(dǎo)致 InvalidCastException。通過使用 try 和 catch,發(fā)生錯(cuò)誤時(shí)會(huì)顯示錯(cuò)誤信息。
public class UnboxingTest
{
public static void Main()
{
int intI=123;
object o=intI;//裝箱
try
{ //取消裝箱無效,short不是裝了箱的值類型.檢查該對象實(shí)例是否是某個(gè)給定的值類型的裝了箱的值
int intJ=(short)o;
Console.WriteLine("UnboxingOK.");
}
catch(InvalidCastException e)
{
Console.WriteLine("{0}Error:Incorrectunboxing.",e);
}
}
}
其它轉(zhuǎn)換用運(yùn)算符
as
as 運(yùn)算符用于執(zhí)行引用類型的顯式類型轉(zhuǎn)換。 如果要轉(zhuǎn)換的類型與指定類型兼容,轉(zhuǎn)換就會(huì)成功;如果類型不兼容,則返回null。
表達(dá)式as 類型
as 運(yùn)算符類似于類型轉(zhuǎn)換,所不同的是,當(dāng)轉(zhuǎn)換失敗時(shí),as 運(yùn)算符將返回null,而不是引發(fā)異常。
示例:
object o1=”SomeString”;
object o2=5;
string s1=o1 as string;//類型兼容s1=”SomeString”
string s2=o2 as string;//s2=null
is
is 運(yùn)算符用于檢查對象的類型是否與給定類型兼容(對象是該類型,或是派生于該類型)。
表達(dá)式 is 類型
示例:
int i=10;
if(iisobject)//true
{}
sizeof
sizeof 運(yùn)算符用于獲得值類型的大小(以字節(jié)為單位)。
sizeof(type)
sizeof 運(yùn)算符僅適用于值類型,而不適用于引用類型。
sizeof 運(yùn)算符僅可用于 unsafe 模式。
示例:
unsafe
{
Console.WriteLine(“{0}”,sizeof(int));
}
- C#數(shù)據(jù)類型轉(zhuǎn)換(顯式轉(zhuǎn)型、隱式轉(zhuǎn)型、強(qiáng)制轉(zhuǎn)型)
- C#中數(shù)據(jù)類型的轉(zhuǎn)換介紹
- C# 數(shù)據(jù)類型轉(zhuǎn)換
- 詳解C# 泛型中的數(shù)據(jù)類型判定與轉(zhuǎn)換
- 詳解C#數(shù)據(jù)類型及其轉(zhuǎn)換
- C#中把任意類型的泛型集合轉(zhuǎn)換成SQLXML數(shù)據(jù)格式的實(shí)例
- c#之用戶定義的數(shù)據(jù)類型轉(zhuǎn)換介紹
- C#基礎(chǔ)之?dāng)?shù)據(jù)類型轉(zhuǎn)換
相關(guān)文章
c#和avascript加解密之間的互轉(zhuǎn)代碼分享
這篇文章主要介紹了c#和Javascript間互轉(zhuǎn)的Xxtea加解密代碼,需要的朋友可以參考下2014-02-02c# Bitmap轉(zhuǎn)bitmapImage高效方法
本文主要介紹了c# Bitmap轉(zhuǎn)bitmapImage高效方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11C#如何將DataTable導(dǎo)出到Excel解決方案
由于公司項(xiàng)目中需要將系統(tǒng)內(nèi)用戶操作的所有日志進(jìn)行轉(zhuǎn)存?zhèn)浞?,考慮到以后可能還需要還原,所以最后決定將日志數(shù)據(jù)備份到Excel中2012-11-11C#中參數(shù)數(shù)組、引用參數(shù)和輸出參數(shù)示例詳解
這篇文章主要給大家介紹了關(guān)于C#中參數(shù)數(shù)組、引用參數(shù)和輸出參數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05C#基于正則表達(dá)式實(shí)現(xiàn)獲取網(wǎng)頁中所有信息的網(wǎng)頁抓取類實(shí)例
這篇文章主要介紹了C#基于正則表達(dá)式實(shí)現(xiàn)獲取網(wǎng)頁中所有信息的網(wǎng)頁抓取類,結(jié)合完整實(shí)例形式分析了C#正則網(wǎng)頁抓取類與使用技巧,需要的朋友可以參考下2017-05-05