App下載

C# 編程學習系列(九)結構體

自我否定先驅者 2021-12-17 14:39:45 瀏覽數(shù) (3714)
反饋

1、結構體創(chuàng)建

結構體的創(chuàng)建需要使用 struct 關鍵字來聲明,結構體中可以有不同類型的變量:

struct role{
    public string name;
    public int age;
}

雖然結構體和數(shù)組一樣是可以存儲多個值,但是它們的數(shù)據(jù)類型是不同的,數(shù)組是屬于引用類型,而結構體是屬于值類型:

role role1;


... // 筆者懶,就省略了所有賦值的步驟


if(role1 is System.ValueType){
    Console.WriteLine("結構體是值類型");
}
else{
    Console.WriteLine("結構體是引用類型");
}

注意:在這里想要使用 role1,首先保證 role1 里面的所有變量都已經賦值。只要有一個沒有賦值,它就會產生報錯。

2、結構體中的其他類型

(1)數(shù)組

結構體里面除了可以聲明變量,同時也可以聲明數(shù)組:

struct role{
    public string[] food;
}


static void Main(string[] args){
    role role1;
    role1.food = new string[]{ "小籠包 ", "菜包", "肉包" };
}

(2)對象

可以聲明對象:

struct role{
    public object obj;
}
static void Main(string[] args){
    role role1;
    role1.obj = 123;
}

(3)類

還可以聲明類:

class c1{
    struct role{
        public c2 c2;
    }
    static void Main(string[] args){
        role role1;
        role1.c2 = new c2();
    }
}


class c2{
    public string name = "xxx";

    
    public void method(){
        Console.WriteLine("成員方法");
    }
}

(4)結構

結構體除了可以聲明許多數(shù)據(jù)類型,結構作為數(shù)據(jù)類型的一種,也是可以被聲明:

struct role{
    public string rname;
    public struct skill{
        public string sname;
    }
}


static void Main(string[] args){
    role role1;
    role1.rname = "喬峰";
    role.skill s1;
    s1.sname = "降龍十八掌";
    Console.WriteLine("{0}正在使用{1}", role1.rname, s1.sname);
    // 喬峰正在使用降龍十八掌
}

(5)方法

除了可以聲明各種數(shù)據(jù)類型,結構體里面還可以聲明方法:

struct role{
    public void sayHello(){
        Console.WriteLine("Hello everyone");
    }
}


static void Main(string[] args){
    role role1;
    role1.sayHello();
}

3、總結

關于以上內容學習的總結:

(1)結構體的創(chuàng)建,必須使用 struct 關鍵字來聲明。

(2)在使用結構體的時候,結構體中聲明的內容必須要賦值。

(3)結構體里面可以聲明變量、數(shù)組、對象、類、結構體和方法。

關于學習的疑惑:

(1)結構體中并不是所有的值都需要,有時候某部分的值僅需要默認值,該怎么處理?

(2)結構體里面聲明對象和類的具體使用是哪一些方面的?

(3)為什么在使用結構體里面的數(shù)組,不能省略new 關鍵字,否則會產一些奇怪報錯。

C#

0 人點贊

App下載
App下載

掃描二維碼

下載編程獅App

關注有禮
微信公眾號

掃碼關注 領資料包

意見反饋
幫助中心
返回頂部