Microsoft C# | 轉型與轉換

閱讀時間約 1 分鐘

前言

  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#被稱為是安全穩定的程式,那這個安全穩定的方式來源在哪裡呢?我覺得跟資料型態的嚴謹有關係,在資料型態上可以看到很多介紹,撰寫程式時也會因為資料型態而糾結很久,但熟悉以後,這些東西會加快撰寫效率和方便性。
為什麼會看到廣告
avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
前言   這篇文章將會介紹 for 陳述式和 foreach 陳述式,以及比較兩者的差別,並撰寫範例介紹用途。 迴圈使用條件   當我們需要重複執行程式碼達特定次數,或需要控制.NET執行階段去執行反覆項目的方式時,會使用到迴圈,在遊戲產程式中,迴圈更是不可少的重要程式碼區塊。 for 關鍵字
這篇文章將會介紹運算式與程式碼小知識,並介紹Switch-case這常用的陳述式,並提供範例的程式碼。
Side Project 是打破傳說魔咒的解咒法,對於新鮮人來說,要找工作大多都要求工作經驗,然而這就跟打副本需要至少兩次刷副本的經驗一樣,若在團隊中沒有熟人,永遠會卡在等級一。
這篇文章將會告訴你詭野西部這一款遊戲的設計巧思,優秀的設計點以及創新之處。
這篇文章將會講述在程式員中的慣例,命名規則,這些規則並不具有強制力,但能讓你在寫程式時有更好的可讀性。
本篇文章將會講述陣列 (Array) 及 foreach 陳述式,陣列是寫程式中關於大筆資料的儲存方式,而 foreach 是處理大筆資料的處理方式之一。
前言   這篇文章將會介紹 for 陳述式和 foreach 陳述式,以及比較兩者的差別,並撰寫範例介紹用途。 迴圈使用條件   當我們需要重複執行程式碼達特定次數,或需要控制.NET執行階段去執行反覆項目的方式時,會使用到迴圈,在遊戲產程式中,迴圈更是不可少的重要程式碼區塊。 for 關鍵字
這篇文章將會介紹運算式與程式碼小知識,並介紹Switch-case這常用的陳述式,並提供範例的程式碼。
Side Project 是打破傳說魔咒的解咒法,對於新鮮人來說,要找工作大多都要求工作經驗,然而這就跟打副本需要至少兩次刷副本的經驗一樣,若在團隊中沒有熟人,永遠會卡在等級一。
這篇文章將會告訴你詭野西部這一款遊戲的設計巧思,優秀的設計點以及創新之處。
這篇文章將會講述在程式員中的慣例,命名規則,這些規則並不具有強制力,但能讓你在寫程式時有更好的可讀性。
本篇文章將會講述陣列 (Array) 及 foreach 陳述式,陣列是寫程式中關於大筆資料的儲存方式,而 foreach 是處理大筆資料的處理方式之一。
你可能也想看
Google News 追蹤
Thumbnail
我們在上一篇簡單介紹了 int(整數)是做什麼用的,接下來要介紹常和他一起出現的好朋友 float 浮點數 跟 str 字串。 float 浮點數: 函數的式子寫做 float( ) ,浮點數就是帶有小數點的資料型別,他可以將字串或是數字轉換為有小數點的狀態。前提是字串內的字符必須是數字的格
Thumbnail
今天要來介紹的是Python中資料型別的函數, 這幾天學習的素材是Youtube上“程式柴大大的Python 6 小時初學者課程”,一步一步帶著大家操作並解,學習中也別忘了要多多練習,練習的部分我是把我學到的東西請Chatgpt幫我出類似的題型並讓我練習。 以下我先寫出一個簡單的code,再加以
Thumbnail
題目敘述: Minimum Cost to Convert String I 給定字元轉換映射表original, changes和對硬的成本陣列cost。 請問字串source轉換到字串destination的最小成本是多少? 如果無解,請返回-1 如果有解,請返回整體的轉換最小成本。
Thumbnail
內容涵蓋資料型別、型別轉換、自訂型別、元組型別、集合型別和字典型別等主題。文章首先詳述內建型別如bool、byte、char等的定義和使用,接著討論型別轉換,包括隱含轉換和明確轉換。之後文章介紹自訂型別的建立,以及元組、集合、陣列和字典型別的操作與例子。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
我們在上一篇簡單介紹了 int(整數)是做什麼用的,接下來要介紹常和他一起出現的好朋友 float 浮點數 跟 str 字串。 float 浮點數: 函數的式子寫做 float( ) ,浮點數就是帶有小數點的資料型別,他可以將字串或是數字轉換為有小數點的狀態。前提是字串內的字符必須是數字的格
Thumbnail
今天要來介紹的是Python中資料型別的函數, 這幾天學習的素材是Youtube上“程式柴大大的Python 6 小時初學者課程”,一步一步帶著大家操作並解,學習中也別忘了要多多練習,練習的部分我是把我學到的東西請Chatgpt幫我出類似的題型並讓我練習。 以下我先寫出一個簡單的code,再加以
Thumbnail
題目敘述: Minimum Cost to Convert String I 給定字元轉換映射表original, changes和對硬的成本陣列cost。 請問字串source轉換到字串destination的最小成本是多少? 如果無解,請返回-1 如果有解,請返回整體的轉換最小成本。
Thumbnail
內容涵蓋資料型別、型別轉換、自訂型別、元組型別、集合型別和字典型別等主題。文章首先詳述內建型別如bool、byte、char等的定義和使用,接著討論型別轉換,包括隱含轉換和明確轉換。之後文章介紹自訂型別的建立,以及元組、集合、陣列和字典型別的操作與例子。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料