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

结构体(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”必须完全赋值”。

猜你喜欢

转载自blog.csdn.net/York_New/article/details/81840775