欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#学习篇之基础回顾(2)----- 结构体

程序员文章站 2022-06-13 21:03:34
...

结构体(struct)可以使得单一变量绑定多种数据类型的相关数据,是值类型数据结构。

如定义书的变量,可以绑定多种数据类型,包括书的编号、标题以及作者等信息:

struct Books
{
    public int id;
    public string title;
    public string author;
}
……
    Books b;
    b.id = 100001;
    b.title = "C# Study";
    b.author = "me";

结构体与类的区别

  1. 结构体是值类型,类是引用类型。

  2. 结构体不能直接实例属性或者给字段设置初始值,类可以。

  3. 结构体不能被继承,类可以。

  4. 结构体初始化的时候可以不加New,类必须加New。

  5. 结构体不能声明默认(无参数)构造函数,类可以。

初始化结构体

初始化结构体需要注意的是,结构体虽然无法声明默认(无参数)构造函数,但是可以直接通过隐式默认(无参数)构造函数带参构造函数对象初始值设定项来初始化结构体,什么意思呢,我们可以看一下例子:

    struct Books
    {
        public int id;
        public string title;
        public string author;
        //带参构造函数
        public Books(int i, string t, string a)
        {
            id = i;
            title = t;
            author = a;
        }
    }
    static class Program
    {
        static void Main(string[] args)
        {
            Books a = new Books();//隐式默认(无参数)构造函数
            Books b = new Books(100001, "C# Study", "me");//带参构造函数
            Books c = new Books { id = 100002, title = "C# Study", author = "me" };//对象初始值设定项
            Console.WriteLine("{0},{1},{2}", b.id, b.title, b.author);
            Console.WriteLine("{0},{1},{2}", c.id, c.title, c.author);
            Console.ReadKey();
        }
    }

运行结果:100001,C# Study,me

                             100002,C# Study,me

上面的程序运行当然是没问题的,我们可以看到,结构体中声明的带参构造函数必须要给结构体中所有的成员赋值,否则编译的时候就会报错,提示“在控制返回调用方之前,字段“Books.author”必须完全赋值”。

相关标签: 结构体 c#