Microsoft C# | 轉型與轉換

更新 發佈閱讀 6 分鐘

前言

  C#跟其他程式語言最大的差別,在於它有嚴格規定資料型態,省下空間的同時也能讓運作效率提升,不過也因此會有轉型態的需求,像是把數字轉換成字串這種操作就會視需要的。

  這篇文章將會講述 C#中資料型態轉換的方式,並藉由官方的範例來介紹各個關鍵字和陳述式,說明他們的運作原理。

簡介

  我們可能需要讓字串資料進行數學運算(例如int),或使用字串差補來格式化輸出數值,當了解 C# 編譯器的主要考量時,就更容易了解其以特定方式運作的原因。

  字串差補在之前的文章有談到過,請參考:Micorsoft C# |基礎知識彙整 2

資料轉換的技術

  資料轉換在C#中有三種比較常見的方法,分別是:

  • 在資料類型上使用協助程式方法。
  • 在變數上使用協助程式方法。
  • 使用 Convert 類別的方法。

轉換運算子 | ()

  使用(int)等運算子來轉換,這種轉換較為強硬,如果轉換失敗會出錯,其中,string不能轉數值類(int、float等)。

放大轉換

  將值從較少資訊的資料類型,轉換成可能保存較多資訊的資料類型,在此情況不會遺失任何資訊,譬如 從整數 3 轉換成 3.000,在這種情況下就不會遺失任何資訊。

縮小轉換

  將值從較多資訊的資料類型,轉換成只能保存較少資訊的資料類型,可能遺失有效位數(例如小數),當確定使用縮小傳換時,必須執行轉型,以下為範例:

decimal myDecimal = 3.14m;
Console.WriteLine($"decimal: {myDecimal}");

int myInt = (int)myDecimal;
Console.WriteLine($"int: {myInt}");

上述為將常用於科學數值的 decimal 轉換成 int,因此會出現位數流失的問題。

ToString()

  使用此方法將數字轉換成字串,雖然並非必要手段,但可以讓其他程式員了解我們在幹嘛。

Parse()

  大部分的數值資料類型都擁有此方法,它會將字串轉換成城指定的資料類型,譬如:將兩個string轉換成int,不過如果遇到無法轉換的情況會出問題。

int.parse(string);

Convert

此類別將字串轉換成數字

string value1 = "5";
string value2 = "7";
int result = Convert.ToInt32(value1) * Convert.ToInt32(value2);
Console.WriteLine(result);

適合的方法

  如果是放大轉換,可以依賴編譯器來執行轉換,不過如果是縮小轉換就會需要使用Convert類別,當確定轉換沒有問題時,可以使用轉換運算子。

TryParse()

將字串資料轉換成數值資料,避免轉換資料類型造成執行階段的錯誤,例如:

string name = "Bob";
Console.WriteLine(int.Parse(name));

會跳以下錯誤

System.FormatException: 'Input string was not in a correct format.'

執行操作

在所有數值資料類型上都可以使用:

  • 此方法會嘗試將字串剖析為指定的數值資料類型。
  • 如果成功,此方法會將轉換後的值儲存在 out 參數中。
  • 它將返回一個布林值,指示操作是成功還是失敗。

out參數

  方法可返回值或返回void,方法還可以透過out參數返回值,定義與輸入參數相同但包含關鍵字out。

  使用out參數調用方法時,必須在變量前使用關鍵字out來保存值,並可在代碼其他部分使用。

string value = "102";
int result = 0;
if (int.TryParse(value, out result))
{
Console.WriteLine($"Measurement: {result}");
}
else
{
Console.WriteLine("Unable to report the measurement.");
}

其中關注這一行

if (int.TryParse(value, out result))

  如果int.TryParse()方法將string變數value轉換成int,則會傳回 true;否則會傳回 false,故將此陳述式包圍在 if 陳述式中,並根據該陳述式執行決策邏輯。

  其中,轉換後的值會儲存在result,簡單來說,int.TryParse()會回傳bool,它的作用是把左邊的值轉換成int儲存在右邊,失敗False成功True。

  特殊之處在於,這個result可以同時透過程式碼區塊內部和外部存取,所以out關鍵字會指示編譯器雙向參數傳達輸出。

TryParse()的重要性

  • 將字串轉換成數值資料類型時,請使用 TryParse()。
  • 如果转换成功,TryParse() 会返回 true;如果失败,则会返回 false。
  • out 參數提供傳回值之方法的次要方式。 在此案例中,out 參數會傳回轉換後的值。
  • 將引數傳入已定義 out 參數的方法時,請使用關鍵字 out。

後記

  在程式設計中,c#被稱為是安全穩定的程式,那這個安全穩定的方式來源在哪裡呢?我覺得跟資料型態的嚴謹有關係,在資料型態上可以看到很多介紹,撰寫程式時也會因為資料型態而糾結很久,但熟悉以後,這些東西會加快撰寫效率和方便性。

raw-image


留言
avatar-img
瓶裝雪的沙龍
117會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/06/22
  遊戲將以不破壞遊戲體驗的情況下分析,避免劇透。因本文為求職遊戲企劃時所寫分析,故以遊戲企劃之角度撰寫文章,程式及美術僅簡易分析及解構。備註:後記有雷,如果有需要請避開。
Thumbnail
2024/06/22
  遊戲將以不破壞遊戲體驗的情況下分析,避免劇透。因本文為求職遊戲企劃時所寫分析,故以遊戲企劃之角度撰寫文章,程式及美術僅簡易分析及解構。備註:後記有雷,如果有需要請避開。
Thumbnail
2024/05/28
這篇文章將會講述新一代(young designer's exhibition 2024)的參賽與參展心得與體悟:從新一代概述到會場四天的分享,最後談談我的體悟與經驗。
Thumbnail
2024/05/28
這篇文章將會講述新一代(young designer's exhibition 2024)的參賽與參展心得與體悟:從新一代概述到會場四天的分享,最後談談我的體悟與經驗。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
一、自動轉型-二、明確轉型-三、Parse方法-補充、日期時間的轉換>>> 當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹: 一、自動轉型 運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是
Thumbnail
一、自動轉型-二、明確轉型-三、Parse方法-補充、日期時間的轉換>>> 當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹: 一、自動轉型 運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
C#跟其他程式語言最大的差別,在於它有嚴格規定資料型態,這篇文章將會講述 C#中資料型態轉換的方式,並藉由官方的範例來介紹各個關鍵字和陳述式,說明他們的運作原理。
Thumbnail
C#跟其他程式語言最大的差別,在於它有嚴格規定資料型態,這篇文章將會講述 C#中資料型態轉換的方式,並藉由官方的範例來介紹各個關鍵字和陳述式,說明他們的運作原理。
Thumbnail
這篇文章將會介紹運算式與程式碼小知識,並介紹Switch-case這常用的陳述式,並提供範例的程式碼。
Thumbnail
這篇文章將會介紹運算式與程式碼小知識,並介紹Switch-case這常用的陳述式,並提供範例的程式碼。
Thumbnail
這篇文章將會講述在程式員中的慣例,命名規則,這些規則並不具有強制力,但能讓你在寫程式時有更好的可讀性。
Thumbnail
這篇文章將會講述在程式員中的慣例,命名規則,這些規則並不具有強制力,但能讓你在寫程式時有更好的可讀性。
Thumbnail
本篇文章將會記錄Microsoft關於數字計算相關的知識,以及紀錄這些計算的專有名詞,補足闕漏的知識。
Thumbnail
本篇文章將會記錄Microsoft關於數字計算相關的知識,以及紀錄這些計算的專有名詞,補足闕漏的知識。
Thumbnail
這篇文章為介紹C#基礎知識的一部分,如果你是直接開始寫程式的C#程式員,可以看看這篇文章補足一些基礎知識。
Thumbnail
這篇文章為介紹C#基礎知識的一部分,如果你是直接開始寫程式的C#程式員,可以看看這篇文章補足一些基礎知識。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News