最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中struct與class的區(qū)別詳解

 更新時間:2022年06月15日 15:39:39   作者:qq_42987967  
本文主要介紹了C#中struct與class的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1.最大的區(qū)別

struct類型定義的變量是值類型,class定義的變量是引用類型。因此struct類型定義的對象是分配在棧上面的,而class定義的對象是分配在堆上的。

2.struct成員無法被聲明為protected。

舉例:

struct Test1
{
    protected readonly bool c;//會報錯
}

3.struct是隱式的sealed類

因此struct不能被繼承也無法繼承其他,因此其成員也不能指定為 abstract、virtual (畢竟被密封了,無法實現(xiàn)虛函數(shù)跟抽象函數(shù))。

但是struct可以實現(xiàn)接口。

interface i1
{
    void fun();
}
struct Test1:i1
{
    public void fun()
    {
        throw new System.NotImplementedException();
    }
}

4.struct中無法重載默認構造函數(shù)

struct Test1
{
    public int a ;
    public Test1(int A) //但是可定義非默認構造函數(shù)
    { 
        a = A; 
    }
    public Test1()//對默認構造函數(shù)重載,將報錯
    {
        a = 1;
    }
}

5.關于對象的初始化

1)結構體中的變量是不能在結構體中直接賦初始值的,類的變量成員可以。

struct Test1
{
    public int a =1;//不允許賦初值,因此是錯的
    public int b;//對的
 
}
class Test2
{
    public int a=1;//對的
    public int b;//對的,默認賦初值為0 
}

2)當使用 New 操作符創(chuàng)建一個結構對象時,會調用適當?shù)臉嬙旌瘮?shù)來創(chuàng)建結構。與類不同,結構可以不使用 New 操作符即可被實例化。(即不使用new也是真的開辟了一個存儲該struct變量的空間)

3)但是如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被賦值,對象才被使用。如果使用默認構造函數(shù)進行new,會對數(shù)據(jù)進行默認賦值(int為0,引用類型為Null)

struct Test1
{
    public int a =1;
    public string b =1;
}
    void TestFun()
    {
        Test1 test1;
        test1.a = 1,test1.b = "1234";//必須給a跟b都賦值了才能使用test1
        Console.WriteLine(test1.a);
        Test1 test2=new Test1();//test2.a=0,test2.b=Null
    }

4)struct中的構造函數(shù)必須為所有數(shù)據(jù)成員賦初值。

struct Test1
{
    public int a ;//不允許賦初值,因此是錯的
    public string b;
    public Test1(int A) { 
        a = A;
        b = "4534";//必須對所有數(shù)據(jù)成員賦初值,否則報錯
    }
}

6.結構體沒有析構函數(shù),也無法自己去給結構體定義一個析構函數(shù)

畢竟struct是值類型,用析構函數(shù)也沒啥鳥用。

struct Test1
{
    ~Test1() { }//錯誤的做法,會報錯
}

到此這篇關于C#中struct與class的區(qū)別詳解的文章就介紹到這了,更多相關C# struct與class內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

罗江县| 南阳市| 隆化县| 侯马市| 进贤县| 上高县| 雷波县| 秦皇岛市| 佛冈县| 鲁甸县| 开平市| 临江市| 左云县| 商丘市| 元氏县| 和政县| 石首市| 库车县| 法库县| 上高县| 霞浦县| 扎兰屯市| 肥城市| 玉龙| 云南省| 荔浦县| 新宾| 界首市| 平陆县| 拉萨市| 库尔勒市| 道真| 来宾市| 临沭县| 西丰县| 井陉县| 绥德县| 伊通| 韶山市| 松江区| 沽源县|