iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0
自我挑戰組

初心者學C#系列 第 20

Day 20:C#的結構,幫BL文做分類 ง ( ⌓̈ )ง

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

怎麼覺得好像寫了20天的英文教學文…?學程式語言跟學英文日文什麼的很像,幾天不用就會忘記(也可能是我記憶力比較短暫吧),所以盡量自己亂寫一堆(誤)

今天的主題: 結構(structures) 是C#裡面一種值型式的資料類別(忘記資料類別是做什麼的可以回去看data types),用處是讓一個變數中有其資料類型的相關資訊,以 struct關鍵字(struct keyword) 創造結構;結構裡面變數的資料類型是自己定義的,但就像其它C#裡的東西,這樣講難免抽象了點,所以會用例子做更好的解釋。

C#結構的定義和用處
結構敘述的作用是定義一個全新的資料類型,先定義某個結構才能使用。假設我今天要定義一個可以分類BL文的結構(變數名稱很重要),並且分類的依據有文名(name)、作者(author)、風格(genre)、章回數(number of chapters)和字數(word count),然後有兩篇文:

using System;
namespace CubeApplication
{
    struct BLNovels
    {
        public string name;
        public string author;
        public string genre;
        public int numberOfChapters;
        public int wordCount;
    };
    
    class Stuff
    {
        static void Main(string[] args)
        {
            BLNovels novelX;
            BLNovels novelY;

            novelX.name = "Hiraeth";
            novelX.author = "haruday";
            novelX.genre = "angst";
            novelX.numberOfChapters = 5;
            novelX.wordCount = 100605;

            novelY.name = "Farfalle";
            novelY.author = "sw3etsociopath";
            novelY.genre = "comedy";
            novelY.numberOfChapters = 1;
            novelY.wordCount = 26256;

            Console.WriteLine("NovelX name: {0}", novelX.name);
            Console.WriteLine("NovelX author: {0}", novelX.author);
            Console.WriteLine("NovelX genre: {0}", novelX.genre);
            Console.WriteLine("NovelX chapters: {0}", novelX.numberOfChapters);
            Console.WriteLine("Novel X word count: {0}", novelX.wordCount);

            Console.WriteLine("NovelY name: {0}", novelY.name);
            Console.WriteLine("NovelY author: {0}", novelY.author);
            Console.WriteLine("NovelY genre: {0}", novelY.genre);
            Console.WriteLine("NovelY chapters: {0}", novelY.numberOfChapters);
            Console.WriteLine("NovelY word count: {0}", novelY.wordCount);
        }
    }
}

這串又臭又長、打很久的東東執行後是這樣:

NovelX name: Hiraeth
NovelX author: haruday
NovelX genre: angst
NovelX chapters: 5
Novel X word count: 100605
NovelY name: Farfalle
NovelY author: sw3etsociopath
NovelY genre: comedy
NovelY chapters: 1
NovelY word count: 26256

(這兩個文真的存在喔~想看的自己去看)

C#中結構的特色

  • 結構中可以有方法、欄位、索引器、財產、運算子方法和事件
  • 預設建構器和結構的差別在於前者的內容無法更動
  • 結構無法像類別一樣繼承類別或結構
  • 結構不能作為其他結構或類別的基礎
  • 結構可以一次應用多個介面
  • 結構不須New運算子即可樣例化(instantiate)
  • 如果不用New,物件則在欄位初始化前都無法使用

類別(classes)和結構(structures)的差異:

  • 類別是參考型式、結構是值型式
  • 結構不支援繼承
  • 結構不能用預設建構器

參考資料:
(a) Tutorialspoint; C# - Structures
https://www.tutorialspoint.com/csharp/csharp_struct.htm


上一篇
Day 19:C#的字串 ♪♪♪ ヽ( ᐖゞ)
下一篇
Day 21: C#的列舉類型 ☆*゚ ゜゚*(´∀`)*゚ ゜゚*☆
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言