C#不同類型的成員變量(字段)的默認值介紹
創(chuàng)建類的一個實例時,在執(zhí)行構造函數(shù)之前,如果你沒有給成員變量賦初始值,C#編譯器缺省將每一個成員變量初始化為他的默認值。
如果變量是方法的局部變量,編譯器就會認為在使用該變量之前,代碼必須給它顯示的設定一個值。否則會發(fā)生“使用了未賦值的局部變量”的錯誤。
對于其他情況,編譯器會在創(chuàng)建變量時,把變量初始化為默認值。
1、對于整型、浮點型、枚舉類型(數(shù)值型),默認值為0或0.0。
2、字符類型的默認值為\x0000。
3、布爾類型的默認值為false。
4、引用類型的默認值為null。
如果聲時變量時,為它指定了初始值(int i=10;),那么這個值就用于初始化該變量了。
雖然C#編譯器為每個類型都設置了默認類型,但作為面向對象的設計原則,我們還是需要對變量進行正確的初始化。實際上這也是C#推薦的做法,沒有對變量進行初始化會導致編譯器發(fā)出警告信息。我們不可能為所有成員變量賦初始值,當然就是賦了值,也不一定就滿足我們的要求。因為我們在使用時,有可能改變我們的初始值。那么我們就要借助構造函數(shù)來初始化我們的成員變量。
// 系統(tǒng)將為未在構造函數(shù)賦值的成員變量賦默認值
using System;
public class Dog
{
public string name;
public int age;
public static void Main()
{
Dog myDog = new Dog();
Console.WriteLine("myDog的名字為“{0}”,年齡為{1}。", myDog.name, myDog.age);
}
}
上述程序中,當創(chuàng)建對象myDog時,會調用默認的構造函數(shù)。所有字段都會被賦給一個默認的值。
輸出結果為:
myDog的名字為“”,年齡為0。
這種特性雖然能夠避免編譯錯誤,但是違背了變量的“先賦值、后使用”原則,這些“無害的”默認值很容易產生難以識別的錯誤,建議盡可能地在構造函數(shù)中對所有成員變量賦值。
相關文章
C#12中的Collection expressions集合表達式語法糖詳解
C#12中引入了新的語法糖來創(chuàng)建常見的集合,并且可以使用..來解構集合,將其內聯(lián)到另一個集合中,下面就跟隨小編一起學習一下C#12中這些語法糖的使用吧2023-11-11
基于C#的圖表控件庫 ScottPlot編譯visual studio 2022
基于 C# 的 圖表控件庫 ScottPlot,開源免費,可以用于開發(fā)一些上位機軟件,如電壓、電流波形的顯示,開發(fā)【示波器】圖形界面,可以顯示一些圖表、波形,總之功能比較的強大,本文介紹了基于C#的圖表控件庫 ScottPlot編譯visual studio 2022,需要的朋友可以參考下2022-06-06

