[C#][VB.NET]使用Nothing或Null作數值運算

今天突然發現VB.NET的Nothing可以拿來作運算,因此作了一點小實驗。意外發現VB.NET與C#在相同的程式邏輯下會跑出不一樣的結果。

以VB.NET來說,假設我們拿Nothing來跟數值作運算

        Console.WriteLine(0 + Nothing)
Console.WriteLine(0 - Nothing)
Console.WriteLine(1 * Nothing)
Console.WriteLine(1 / Nothing)
Console.WriteLine(2 ^ Nothing)



則我們會得到像下面的執行結果

image

可以發現Nothing在VB.NET中作數值運算時會先被轉換成0後再來處理。讓我們來確認一下


        Console.WriteLine(0 = Nothing)
Console.WriteLine(1 = Nothing)

結果發現Nothing真的被當作0來處理

image

再來看一下C#程式


            Console.WriteLine(0 + null);
Console.WriteLine(0 - null);
Console.WriteLine(1 * null);
Console.WriteLine(1 / null);
Console.WriteLine(2 ^ null);

執行後會得到像下面這樣

image

完全看不到任何東西,猜測應該是運算後被變成null了。做個簡單的實驗看看就知道了


Console.WriteLine((0 + null) == null);

運行後可以證明真的被轉為null了

image