iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

初心者學C#系列 第 16

Day 16:C#中可為Null的型別 (`フ´) #

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

今天的主題是Null,完全不曉得這是用來做啥的QwQ 是個有點抽象的概念呢~不過,都寫到這裡了,就順著寫下去囉 :D
可為Null的型別(nullable types) 是C#裡面特殊的屬性/型別,給值可以給一般的值或null值;舉例,Nullable這個變數裡面可以存從-2147483648到2147843647之間的數字,或者存null(為0);其它型別的也是類似的pattern,null格式如下,有兩種表示方法:

//Nullable <資料類型> <變數名稱> = null;
//<資料類型> ? <變數名稱> = null;

看了一下,現在大部分都用第二種表示法,像這樣:

int? x = null; //可為null型別,給null值
int? y = 87; //可為null型別,給正常值

再來講的是 Null聯合運算子(the null coalescing operator) :Null聯合運算子(用兩個問號??這樣表示)跟可為null值型別和引用型別(nullable value types and reference types)一併使用,於允許隱含轉換(implicit conversion)的情況下把一種運算元轉換成另一種可為null型別的運算元。

寫個小程式看看這些可為null的東西能做些什麼~

using System;
namespace Nullables
{
    class Program
    {
        static void Main(string[] args)
        {
            int? x = null; 
            double ? y = 94.87; 
            double z;
            z = x ?? 8787;
            Console.WriteLine("The first z: {0}", z);
            z = y ?? 8787;
            Console.WriteLine("The second z: {0}", z);
        }
    }
}

上面這串執行後會是這樣子:

The first z: 8787
The second z: 94.87

由於變數x的值是null,用??之後值會變成符號後面的運算元,而變數y原本等於94.87,這樣z的值會變成??符號前運算元的值。
順便說一下,string裡面的{0}表示把跟在string後面第一順位的參數代進去,如果有第二個參數則是{1},以此類推,不然只放參數是跑不出來的喔~

今天講到這兒,雖然null這東西剛開始看著不知道會幹嘛,但概念並沒有很難,想要快點知道nullables可以做啥就多寫幾次程式跑看看,出問題也沒差,反正寫程式就是一值從錯誤中學教訓(ˊˇˋ) 寫難搞的文本分析去,雙主修就是個自己做死的節奏 ( T ^ T ) 下一篇要談的是陣列 :>

參考資料:
(a) Tutorialspoint; C# - Nullables
https://www.tutorialspoint.com/csharp/csharp_nullables.htm
(b) TutorialsTeacher; Nullable Type in C#
https://www.tutorialsteacher.com/csharp/csharp-nullable-types
(c) StackOverflow; What does {0} mean when found in a string in C#?
https://stackoverflow.com/questions/530539/what-does-0-mean-when-found-in-a-string-in-c


上一篇
Day 15:C#裡面的方法 ( ͡☉ ͜ʖ ͡☉)
下一篇
Day 17:C#的陣列(上)ᕕ( ᐛ )ᕗ
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言