1. 程式人生 > >C#型別轉換的方法

C#型別轉換的方法

C# 型別轉換方法

型別轉換從根本上說是把資料從一種型別轉換為另一種型別。在 C# 中,型別轉換有兩種形式:

  • 隱式型別轉換 - 這些轉換是 C# 預設的以安全方式進行的轉換, 不會導致資料丟失。例如,從小的整數型別轉換為大的整數型別,從派生類轉換為基類。
  • 顯式型別轉換 - 顯式型別轉換,即強制型別轉換。顯式轉換需要強制轉換運算子,而且強制轉換會造成資料丟失轉換型別的範圍大小和從屬關係和隱式轉換相反。顯式轉換可能會導致資料出錯,或者轉換失敗,甚至無法編譯成功。
下面的例項顯示了一個隱式的型別轉換:
  1. namespace TypeConvertion  
  2. {   class Base  
  3.     {  
  4.     }  
  5.     class Derive : Base //類Derive是類Base的子類
  6.     {  
  7.     }  
  8.     class Program  
  9.     {  
  10.         staticvoid Main(string[] args)  
  11.         {  
  12.             int inum = 100;  
  13.             long lnum = inum; // 進行了隱式轉換,將 int 型(資料範圍小)資料轉換為了 long 型(資料範圍大)的資料
  14.             Base b = new Derive(); // 這裡也是隱式轉換,將一個新建的 Derive 例項轉換為了其基類 Base 型別的例項b
  15.         }  
  16.     }  
  17. }  

下面的例項顯示了一個顯式的型別轉換:

  1. namespace TypeConversionApplication  
  2. {  
  3.     class ExplicitConversion  
  4.     {  
  5.         staticvoid Main(string[] args)  
  6.         {  
  7.             double d = 5673.74;  
  8.             int i;  
  9.             // 強制轉換 double 為 int
  10.             i = (int)d;  
  11.             Console.WriteLine(i);  
  12.             Console.ReadKey();  
  13.         }  
  14.     }  
  15. }  

當上面的程式碼被編譯和執行時,它會產生下列結果:

  1. 5673  

顯示轉換的例子2:

  1. double dnum = 100.1;  
  2. int ifromd = (int)dnum; //double型別顯式轉換轉為int型別
  3. Base b = new Derive();  
  4. Derive d = b as Derive; //使用as進行顯式轉換
  5. Console.WriteLine(d is Base);  
  6. Console.WriteLine(d is Derive);  

執行結果:

  1. FALSE  
  2. FALSE  

C# 型別轉換方法

1、C# 提供了下列內建的型別轉換方法:

序號 方法 & 描述
1 ToBoolean
如果可能的話,把型別轉換為布林型。
2 ToByte
把型別轉換為位元組型別。
3 ToChar
如果可能的話,把型別轉換為單個 Unicode 字元型別。
4 ToDateTime
把型別(整數或字串型別)轉換為 日期-時間 結構。
5 ToDecimal
把浮點型或整數型別轉換為十進位制型別。
6 ToDouble
把型別轉換為雙精度浮點型。
7 ToInt16
把型別轉換為 16 位整數型別。
8 ToInt32
把型別轉換為 32 位整數型別。
9 ToInt64
把型別轉換為 64 位整數型別。
10 ToSbyte
把型別轉換為有符號位元組型別。
11 ToSingle
把型別轉換為小浮點數型別。
12 ToString
把型別轉換為字串型別。
13 ToType
把型別轉換為指定型別。
14 ToUInt16
把型別轉換為 16 位無符號整數型別。
15 ToUInt32
把型別轉換為 32 位無符號整數型別。
16 ToUInt64
把型別轉換為 64 位無符號整數型別。

下面的例項把不同值的型別轉換為字串型別:

  1. namespace TypeConversionApplication  
  2. {  
  3.     class StringConversion  
  4.     {  
  5.         staticvoid Main(string[] args)  
  6.         {  
  7.             int i = 75;  
  8.             float f = 53.005f;  
  9.             double d = 2345.7652;  
  10.             bool b = true;  
  11.             Console.WriteLine(i.ToString());  
  12.             Console.WriteLine(f.ToString());  
  13.             Console.WriteLine(d.ToString());  
  14.             Console.WriteLine(b.ToString());  
  15.             Console.ReadKey();  
  16.         }  
  17.     }  
  18. }  

當上面的程式碼被編譯和執行時,它會產生下列結果:

  1. 75  
  2. 53.005  
  3. 2345.7652  
  4. True  

2、C# 提供了Convert和Parse的型別轉換方法:

  1. using System;  
  2. namespace TypeConversion  
  3. {  
  4.     class ConversionDemo  
  5.     {  
  6.         staticvoid Main(string[] args)  
  7.         {  
  8.             string locstr = 123.ToString();  
  9.             //如果要將"locstr"轉成整型數
  10.             //方法一: 用 Convert 
  11.             int i = Convert.ToInt16(locstr);  
  12.             Console.WriteLine(i);  
  13.             //方法二: 用 Parse
  14.             int ii = int.Parse(locstr);  
  15.             Console.WriteLine(ii);  
  16.             /*int.TryParse(string s,out int i); 
  17.             該方式也是將數字內容的字串轉換為int型別, 
  18.             但是該方式比int.Parse(string s) 好一些,它不會出現異常,最後一個引數result是輸出值, 
  19.             如果轉換成功則輸出相應的值,轉換失敗則輸出0。*/
  20.             string s1 = "abcd";  
  21.             string s2 = "1234";  
  22.             int a, b;  
  23.             bool bo1 = int.TryParse(s1, out a);  
  24.             Console.WriteLine(s1 + " " + bo1 + " " + a);  
  25.             bool bo2 = int.TryParse(s2, out b);  
  26.             Console.WriteLine(s2 + " " + bo2 + " " + b);  
  27.         }  
  28.     }  
  29. }  
執行結果:
  1. 123  
  2. 123  
  3. abcd False 0  
  4. 1234 True 1234  

相關推薦

資料型別轉換方法C#)

New Begining~ MAIN C# 型別轉換方法 C# 提供了下列內建的型別轉換方法: 序號 方法 & 描述 1  ToBoolean    如果可能的話,把型別轉換為布林型。 2  ToByte  &

C#型別轉換方法

C# 型別轉換方法 型別轉換從根本上說是把資料從一種型別轉換為另一種型別。在 C# 中,型別轉換有兩種形式: 隱式型別轉換 - 這些轉換是 C# 預設的以安全方式進行的轉換, 不會導致資料丟失。例如,從小的整數型別轉換為大的整數型別,從派生類轉換為基類。 顯式型

C++中的資料型別轉換方法總結

int到char*,或者反過來從char*到int,在C/C++中到底有多少種轉換方法呢?符合標準的大概有四種。即C資料轉換函式族、sprintf/snprintf/sscanf函式族、字串流std::stringstream、std::strsteam。不符合標準卻又廣為使用的包括CString和boost

C++中的資料型別轉換方法

摘要:本文總結了C/C++中的多種資料型別轉換方法,並比較了各自的優劣。給出了推薦的使用建議。 從int到char*,或者反過來從char*到int,在C/C++中到底有多少種轉換方法呢?符合標準的大概有四種。即C資料轉換函式族、sprintf/snprintf/sscanf函式族、字串流std::stri

c++型別轉換函式的麻煩及解決方法

c++如同C語言一樣, 有語言本身的隱式型別轉換。如將char轉換成int int轉換為double等 c++還可以將double轉換成int 即向下轉換。 這是語言本身提供的,我們不能控制。但是對於我們自己寫的類卻可以自己控制。有兩種函式提供這種型別的轉換:隱式型別轉換操

C# 型別轉換

型別轉換從根本上說是型別鑄造,或者說是把資料從一種型別轉換為另一種型別。在 C# 中,型別鑄造有兩種形式: 隱式型別轉換 - 這些轉換是 C# 預設的以安全方式進行的轉換, 不會導致資料丟失。例如,從小的整數型別轉換為大的整數型別,從派生類轉換為基類。 顯式型別轉換 

C++ 型別轉換-Cast

1、reinpreter_cast 此識別符號的意思即為資料的二進位制形式重新解釋,但是不改變其值。 這個操作符能夠在非相關的型別之間轉換。操作結果只是簡單的從一個指標到別的指標的值的二進位制拷貝。在型別之間指向的內容不做任何型別的檢查和轉換。 用法:reinprete

JS常用資料型別轉換方法大全

一、字串轉換成數字 字串轉換成數字最常用的方法有兩個:parseFloat和parseInt。parseFloat是把一個字串轉換為一個浮點數,parseInt是把一個字串轉換為一個整數。示例如下: var num = parseInt('123abc'); //返回12

C++霧中風景11:釐清C++型別轉換(static_cast,dynamic_cast,reinterpret_cast,const_cast)

C++是一門弱型別的語言,提供了許多複雜和靈巧型別轉換的方式。筆者之前寫的Python與Go都是強型別的語言,對這種弱型別的設計實在是接受無力啊~~ ( 生活所迫,工作還得寫C++啊~~)C++語言提供了四種類型轉換的操作:static_cast,dynamic_cast,reinterpret_cast,

C# 型別轉換is和as

看書得來的知識點: //第一種轉換 if(elem is Solid) { Solid solid=elem as Solid; } //第二種轉換 Solid solid=elem as Solid; if(solid!=null) ...... 在第一種方式中,CLR

java String型別轉換方法

public static void main(String[] args) { String origin = "123"; Integer.valueOf(origin);//轉為Integer封裝型別 Integer.parseInt(origin);/

詳解ECMAscript提供的型別轉換方法

ECMAscript提供了兩種把非數字的原始值轉換為數字的方法即parseInt()和parseFloat()第一個方法可以把所有的值轉換成整數,第二個可以把所有的值轉換成浮點數,但是大前提只有對字串型別的呼叫這個方法,才可以正確執行,其他型別將會返回NaN。parseInt

Python:使用ctypes庫呼叫外部DLL(附帶ctypes c 型別轉換圖)

2010-04-04 23:36 by 無常, 22558 閱讀, 6 評論, 收藏, 編輯 前言 朋友的公司是做GPS的,上週聯絡到我要幫做個程式把他們平臺的車輛定位跟蹤資料和省裡的平臺對接。看一下官方提供的三個文件,洋洋灑灑共一百多頁,一大堆協議的定義甚

C#型別轉換總結

C# 出來也有些日子了,最近由於程式設計的需要,對 C# 的型別轉換做了一些研究,其內容涉及 C# 的裝箱/拆箱/別名、數值型別間相互轉換、字元的 ASCII 碼和 Unicode 碼、數值字串和數值之間的轉換、字串和字元陣列/位元組陣列之間的轉換、各種數值型別和位元組陣列之

C++ 型別轉換(Casting Operators)

   在C++中,經常會涉及到型別轉換,雖說一般情況下不建議型別轉換,但有時候還是避免不了。轉換的時候,可能一般都直接使用C語言風格的轉換(直接強制轉換),但這樣做可能很不安全,容易造成資料丟失(如int-> char),記憶體訪問違規。    下面講一講C++的幾個

Java中常用的資料型別轉換方法

int -> String int i=12345; String s=”“; 第一種方法:s=i+”“; 第二種方法:s=String.valueOf(i); 這兩種方法有什麼區別呢?作用是不是一樣的呢?是不是在任何下都能互換呢? Strin

c++ c# 型別轉換

//C#呼叫C++的DLL蒐集整理的所有資料型別轉換方式,可能會有重複或者多種方案,自己多測試 //c++:HANDLE(void *) ---- c#:System.IntPtr //c++:Byte(unsigned char) ---- c

C型別轉換

int main(void) { signed short A = -10; printf("~A = %u\n", ~A); char c = 128; printf("c=%d\n",c); return 0; }     通過這個簡單的測試,發現自己對型別轉

C#型別轉換總結(一)

C# 出來也有些日子了,最近由於程式設計的需要,對 C# 的型別轉換做了一些研究,其內容涉及 C# 的裝箱/拆箱/別名、數值型別間相互轉換、字元的 ASCII 碼和 Unicode 碼、數值字串和數值之間的轉換、字串和字元陣列/位元組陣列之間的轉換、各種數值型別和位元組陣列

C++型別轉換操作符(cast operator)

dynamic_cast用以轉換多型型別(polymorphic type).建立執行時檢查將保證轉換的有效性。如果該轉換不是安全的,則丟擲一個bad_cast異常。static_cast用以轉換非多型型別。沒有執行時檢查。const_cast用以除去一個物件的常態(constness)和易失態(volat