zhcn 编程语言 Golang Go 文件处理 非公開: C# 结构:结构

C# 结构:结构

在 C# 中,结构也称为结构类型(“struct types”或“struct types”)。这是一种可以封装数据和相关函数的值类型。结构在语法上与类非常相似。您可以同时使用两者。用于封装数据,两者都可以包含成员属性和成员方法。

1. 定义结构

要定义结构,必须使用 struct 关键字。每个结构都可以被认为是一种新的数据类型,可以包含多个成员(成员属性和成员方法),例如下面声明的 Books 结构。

struct Books {
    public string title;
    public string author;
    public string subject;
    public int book_id;
};

设计结构时应注意以下几点:

  • 您不能为结构声明无参数构造函数,因为每个结构都有一个默认创建的隐式无参数构造函数。
  • 除了静态属性和常量之外,成员属性不能在声明时初始化。
  • 结构构造函数必须初始化结构的所有成员属性。
  • 结构体不能从其他类或结构体继承,也不能用作类的基类型,但结构体类型可以实现接口。
  • 析构函数不能在结构内部声明。

下面的例子展示了如何使用这个结构。

 using System;

namespace it-kiso.com
{
    struct Books {
        public string title;
        public string author;
        public string subject;
        public int book_id;
    }
    class Demo
    {
        static void Main(string[] args) 
        { 
            Books book1;    // Books型のbook1を宣言
            Books book2;    // Books型のbook2を宣言
            // book1の属性を定義する
            book1.title = "C#チュートリアル";
            book1.author = "IT基礎";
            book1.subject = "C#プログラミングチュートリアル";
            book1.book_id = 123456;
            // book2の属性を定義する
            book2.title = "HTTPチュートリアル";
            book2.author = "IT基礎";
            book2.subject = "HTTPプロトコルチュートリアル";
            book2.book_id = 123455;
            // book1の属性情報を出力する
            Console.WriteLine("book1 title : {0}", book1.title);
            Console.WriteLine("book1 author : {0}", book1.author);
            Console.WriteLine("book1 subject : {0}", book1.subject);
            Console.WriteLine("book1 book_id :{0}", book1.book_id);
            // book2の属性情報を出力する
            Console.WriteLine("book2 title : {0}", book2.title);
            Console.WriteLine("book2 author : {0}", book2.author);
            Console.WriteLine("book2 subject : {0}", book2.subject);
            Console.WriteLine("book2 book_id :{0}", book2.book_id);
            Console.ReadKey();
        }
    }
} 

操作的结果将是:

book1 title : C#チュートリアル
book1 author : IT基礎
book1 subject : C#プログラミングチュートリアル
book1 book_id :123456
book2 title : HTTPチュートリアル
book2 author : IT基礎
book2 subject : HTTPプロトコルチュートリアル
book2 book_id :123455

2、结构特点

C#的结构与C/C++的结构有很大不同,C#的结构有以下特点:

  • 结构可以包含方法、字段、索引、属性、运算符方法和事件。
  • 可以在结构上定义构造函数,但不能在结构上定义析构函数。请注意,定义的构造函数不能有参数,因为无参数构造函数是 C# 默认自动定义的,并且无法修改。
  • 与类不同,结构不能从其他结构或类继承。
  • 结构不能用作其他结构或类的基础结构。
  • 一个结构体可以实现一个或多个接口。
  • 结构成员不能设置为抽象、虚拟或受保护。
  • 与类不同,结构体可以在不使用 New 运算符的情况下进行实例化。当您使用 New 运算符实例化结构体时,会自动调用该结构体的构造函数。
  • 当您在不使用 New 运算符的情况下实例化结构体时,结构体对象中的字段保持未分配状态,并且在初始化所有字段之前,结构体实例不可用。
3. 类和结构

类和结构之间的主要区别是:

  • 类是引用类型,结构是值类型。
  • 结构体不支持继承,但可以实现接口。
  • 不能在结构内部声明默认构造函数。

让我们根据上述属性来完成前面的示例。

 using System;

namespace it-kiso.com
{
    struct Books {
        public string title;
        public string author;
        public string subject;
        public int book_id;

        public void getValue(string t, string a, string s, int id){
            title = t;
            author = a;
            subject = s;
            book_id = id;
        }

        public void disPlay(){
            Console.WriteLine("タイトル:{0}", title);
            Console.WriteLine("著者:{0}", author);
            Console.WriteLine("主題:{0}", subject);
            Console.WriteLine("書籍ID:{0}", book_id);
        }
    }
    class Demo
    {
        static void Main(string[] args) 
        { 
            Books book1 = new Books();  // Books構造体のインスタンス化
            Books book2 = new Books();  // Books構造体のインスタンス化
            // book1の属性を定義
            book1.getValue("C#チュートリアル","IT基礎","C#プログラミングチュートリアル",123456);
            // book2の属性を定義
            book2.getValue("HTTPチュートリアル","IT基礎","HTTPプロトコルチュートリアル",123455);
            // book1の属性情報を出力
            book1.disPlay();
            // book2の属性情報を出力
            book2.disPlay();
            Console.ReadKey();
        }
    }
} 

 

通俗易懂的讲解《C#结构:结构体》!您必须观看的最佳 2 个视频

【1/6】構造体の基本をマスター!(そもそも構造体とは?)
https://www.youtube.com/watch?v=teIHuhu0xio&pp=ygUeIEMjIOani-mAoOS9kzog5qeL6YCg5L2TJmhsPUpB
在 C# 中,结构也称为结构类型(“struct types”或“struct types”)。这是一种可以封装数据和相关函数的值类型。结构在语法上与类非常相似。您可以同时使用两者。用于封装数据,两者都可以包含成员属性和成员方法。

1. 定义结构

要定义结构,必须使用 struct 关键字。每个结构都可以被认为是一种新的数据类型,可以包含多个成员(成员属性和成员方法),例如下面声明的 Books 结构。

struct Books {
    public string title;
    public string author;
    public string subject;
    public int book_id;
};

设计结构时应注意以下几点:

  • 您不能为结构声明无参数构造函数,因为每个结构都有一个默认创建的隐式无参数构造函数。
  • 除了静态属性和常量之外,成员属性不能在声明时初始化。
  • 结构构造函数必须初始化结构的所有成员属性。
  • 结构体不能从其他类或结构体继承,也不能用作类的基类型,但结构体类型可以实现接口。
  • 析构函数不能在结构内部声明。

下面的例子展示了如何使用这个结构。

 using System;

namespace it-kiso.com
{
    struct Books {
        public string title;
        public string author;
        public string subject;
        public int book_id;
    }
    class Demo
    {
        static void Main(string[] args) 
        { 
            Books book1;    // Books型のbook1を宣言
            Books book2;    // Books型のbook2を宣言
            // book1の属性を定義する
            book1.title = "C#チュートリアル";
            book1.author = "IT基礎";
            book1.subject = "C#プログラミングチュートリアル";
            book1.book_id = 123456;
            // book2の属性を定義する
            book2.title = "HTTPチュートリアル";
            book2.author = "IT基礎";
            book2.subject = "HTTPプロトコルチュートリアル";
            book2.book_id = 123455;
            // book1の属性情報を出力する
            Console.WriteLine("book1 title : {0}", book1.title);
            Console.WriteLine("book1 author : {0}", book1.author);
            Console.WriteLine("book1 subject : {0}", book1.subject);
            Console.WriteLine("book1 book_id :{0}", book1.book_id);
            // book2の属性情報を出力する
            Console.WriteLine("book2 title : {0}", book2.title);
            Console.WriteLine("book2 author : {0}", book2.author);
            Console.WriteLine("book2 subject : {0}", book2.subject);
            Console.WriteLine("book2 book_id :{0}", book2.book_id);
            Console.ReadKey();
        }
    }
} 

操作的结果将是:

book1 title : C#チュートリアル
book1 author : IT基礎
book1 subject : C#プログラミングチュートリアル
book1 book_id :123456
book2 title : HTTPチュートリアル
book2 author : IT基礎
book2 subject : HTTPプロトコルチュートリアル
book2 book_id :123455

2、结构特点

C#的结构与C/C++的结构有很大不同,C#的结构有以下特点:

  • 结构可以包含方法、字段、索引、属性、运算符方法和事件。
  • 可以在结构上定义构造函数,但不能在结构上定义析构函数。请注意,定义的构造函数不能有参数,因为无参数构造函数是 C# 默认自动定义的,并且无法修改。
  • 与类不同,结构不能从其他结构或类继承。
  • 结构不能用作其他结构或类的基础结构。
  • 一个结构体可以实现一个或多个接口。
  • 结构成员不能设置为抽象、虚拟或受保护。
  • 与类不同,结构体可以在不使用 New 运算符的情况下进行实例化。当您使用 New 运算符实例化结构体时,会自动调用该结构体的构造函数。
  • 当您在不使用 New 运算符的情况下实例化结构体时,结构体对象中的字段保持未分配状态,并且在初始化所有字段之前,结构体实例不可用。
3. 类和结构

类和结构之间的主要区别是:

  • 类是引用类型,结构是值类型。
  • 结构体不支持继承,但可以实现接口。
  • 不能在结构内部声明默认构造函数。

让我们根据上述属性来完成前面的示例。

 using System;

namespace it-kiso.com
{
    struct Books {
        public string title;
        public string author;
        public string subject;
        public int book_id;

        public void getValue(string t, string a, string s, int id){
            title = t;
            author = a;
            subject = s;
            book_id = id;
        }

        public void disPlay(){
            Console.WriteLine("タイトル:{0}", title);
            Console.WriteLine("著者:{0}", author);
            Console.WriteLine("主題:{0}", subject);
            Console.WriteLine("書籍ID:{0}", book_id);
        }
    }
    class Demo
    {
        static void Main(string[] args) 
        { 
            Books book1 = new Books();  // Books構造体のインスタンス化
            Books book2 = new Books();  // Books構造体のインスタンス化
            // book1の属性を定義
            book1.getValue("C#チュートリアル","IT基礎","C#プログラミングチュートリアル",123456);
            // book2の属性を定義
            book2.getValue("HTTPチュートリアル","IT基礎","HTTPプロトコルチュートリアル",123455);
            // book1の属性情報を出力
            book1.disPlay();
            // book2の属性情報を出力
            book2.disPlay();
            Console.ReadKey();
        }
    }
} 

 

通俗易懂的讲解《C#结构:结构体》!您必须观看的最佳 2 个视频

【1/6】構造体の基本をマスター!(そもそも構造体とは?)
https://www.youtube.com/watch?v=teIHuhu0xio&pp=ygUeIEMjIOani-mAoOS9kzog5qeL6YCg5L2TJmhsPUpB