欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#不同類型的成員變量(字段)的默認(rèn)值介紹

 更新時間:2014年01月21日 09:20:50   作者:  
雖然C#編譯器為每個類型都設(shè)置了默認(rèn)類型,但作為面向?qū)ο蟮脑O(shè)計原則,我們還是需要對變量進(jìn)行正確的初始化。實際上這也是C#推薦的做法

創(chuàng)建類的一個實例時,在執(zhí)行構(gòu)造函數(shù)之前,如果你沒有給成員變量賦初始值,C#編譯器缺省將每一個成員變量初始化為他的默認(rèn)值。

如果變量是方法的局部變量,編譯器就會認(rèn)為在使用該變量之前,代碼必須給它顯示的設(shè)定一個值。否則會發(fā)生“使用了未賦值的局部變量”的錯誤。

對于其他情況,編譯器會在創(chuàng)建變量時,把變量初始化為默認(rèn)值。
1、對于整型、浮點型、枚舉類型(數(shù)值型),默認(rèn)值為0或0.0。
2、字符類型的默認(rèn)值為\x0000。
3、布爾類型的默認(rèn)值為false。
4、引用類型的默認(rèn)值為null。

如果聲時變量時,為它指定了初始值(int i=10;),那么這個值就用于初始化該變量了。

雖然C#編譯器為每個類型都設(shè)置了默認(rèn)類型,但作為面向?qū)ο蟮脑O(shè)計原則,我們還是需要對變量進(jìn)行正確的初始化。實際上這也是C#推薦的做法,沒有對變量進(jìn)行初始化會導(dǎo)致編譯器發(fā)出警告信息。我們不可能為所有成員變量賦初始值,當(dāng)然就是賦了值,也不一定就滿足我們的要求。因為我們在使用時,有可能改變我們的初始值。那么我們就要借助構(gòu)造函數(shù)來初始化我們的成員變量。

復(fù)制代碼 代碼如下:

// 系統(tǒng)將為未在構(gòu)造函數(shù)賦值的成員變量賦默認(rèn)值

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);
    }
}


上述程序中,當(dāng)創(chuàng)建對象myDog時,會調(diào)用默認(rèn)的構(gòu)造函數(shù)。所有字段都會被賦給一個默認(rèn)的值。
輸出結(jié)果為:
myDog的名字為“”,年齡為0。

這種特性雖然能夠避免編譯錯誤,但是違背了變量的“先賦值、后使用”原則,這些“無害的”默認(rèn)值很容易產(chǎn)生難以識別的錯誤,建議盡可能地在構(gòu)造函數(shù)中對所有成員變量賦值。

相關(guān)文章

  • C#檢查字符串是否是合法URL地址的方法

    C#檢查字符串是否是合法URL地址的方法

    這篇文章主要介紹了C#檢查字符串是否是合法URL地址的方法,涉及C#字符串判斷的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Unity實現(xiàn)移動物體到鼠標(biāo)點擊位置

    Unity實現(xiàn)移動物體到鼠標(biāo)點擊位置

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)移動物體到鼠標(biāo)點擊位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C#中timer類的用法總結(jié)

    C#中timer類的用法總結(jié)

    System.Windows.Forms.Timer是應(yīng)用于WinForm中的,它是通過Windows消息機(jī)制實現(xiàn)的,類似于VB或Delphi中的Timer控件,內(nèi)部使用API SetTimer實現(xiàn)的。它的主要缺點是計時不精確,而且必須有消息循環(huán)
    2013-10-10
  • 淺談C#中ListView類的用法

    淺談C#中ListView類的用法

    這篇文章主要介紹了淺談C#中ListView的用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C#編程總結(jié)(一)序列化總結(jié)

    C#編程總結(jié)(一)序列化總結(jié)

    本篇主要介紹了C#序列化總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • c#測試反射性能示例

    c#測試反射性能示例

    這篇文章主要介紹了c#測試反射性能示例,Activator.CreateInstance和AssemblyCreateInstance性能測試,需要的朋友可以參考下
    2014-03-03
  • C# memcached緩存使用實例代碼

    C# memcached緩存使用實例代碼

    這篇文章主要介紹了C# memcached緩存使用實例,大家參考使用
    2013-12-12
  • C#12中的Collection expressions集合表達(dá)式語法糖詳解

    C#12中的Collection expressions集合表達(dá)式語法糖詳解

    C#12中引入了新的語法糖來創(chuàng)建常見的集合,并且可以使用..來解構(gòu)集合,將其內(nèi)聯(lián)到另一個集合中,下面就跟隨小編一起學(xué)習(xí)一下C#12中這些語法糖的使用吧
    2023-11-11
  • 基于C#的圖表控件庫 ScottPlot編譯visual studio 2022

    基于C#的圖表控件庫 ScottPlot編譯visual studio 2022

    基于 C# 的 圖表控件庫 ScottPlot,開源免費(fèi),可以用于開發(fā)一些上位機(jī)軟件,如電壓、電流波形的顯示,開發(fā)【示波器】圖形界面,可以顯示一些圖表、波形,總之功能比較的強(qiáng)大,本文介紹了基于C#的圖表控件庫 ScottPlot編譯visual studio 2022,需要的朋友可以參考下
    2022-06-06
  • 3種C# 加載Word的方法

    3種C# 加載Word的方法

    本次經(jīng)驗內(nèi)容分享通過C#程序來加載Word文檔的3種不同方法。分別是:加載本地Word文檔、以只讀模式加載Word文檔、從流加載Word 想具體了解的小伙伴請參考下文
    2021-09-09

最新評論