C#每日一课(十五)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/advent86/article/details/83058888

C# 结构体(Struct)

结构是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct关键字用于创建结构。

为了定义一个结构,必须使用struct语句。struct语句为程序定义了一个带多个成员的新数据类型。

比如,定义一个图书Books的结构体可以如下进行:

struct Books

{

public string title;

public string author;

public string subject;

public long book_id;

};

使用Visual Studio新建C#控制台应用程序Chapter10_001

在项目中添加如下代码:

//定义一个Books结构

    struct Books

    {

        public string title;

        public string author;

        public string subject;

        public long book_id;

    };



    class Program

    {

        static void Main(string[] args)

        {

            //声明Book类型数组

            Books[] books = new Books[2];

            //初始化books数组中的值

            books[0].title = "ESSENTIAL C#6.0";

            books[0].author = "Mark Michaelis Eric Lippert";

            books[0].subject = "C#";

            books[0].book_id = 100001;



            books[1].title = "C++ Primer Plus Sixth Edition";

            books[1].author = "Stephen Prata";

            books[1].subject = "C++";

            books[1].book_id = 100002;



            //在控制台输出信息

            foreach (Books b in books)

            {

                Console.WriteLine("Book Title:{0}",b.title);

                Console.WriteLine("Book Author:{0}", b.author);

                Console.WriteLine("Book Subject:{0}",b.subject);

                Console.WriteLine("Book Id:{0}",b.book_id);

                Console.WriteLine("------------------------------");

            }



            Console.ReadKey();

        }

    }

编译运行后结果如下:

C#结构的特点:

  1. 结构可以带有方法、字段、索引、属性、运算符方法和事件
  2. 结构可以定义构造函数,但是不可以定义析构函数。注意是不可以定义默认构造函数的,默认的构造函数是自动定义且不可以修改的
  3. 与类不同,结构不能继承其它结构或类
  4. 结构不可以作为其它结构或类的基础结构
  5. 结构可以实现一个或多个接口
  6. 结构成员不可以指定为abstract、virtual、protected
  7. 当使用new操作符创建一个结构对象时,会调用适当的构造函数来创建结构,与类不同,结构可以不用new操作符即可被实例化
  8. 如果不使用new操作符,只有在所有字段都被初始化后,字段才被赋值,对象才被使用

 

从上面可以看出类与结构主要的不同点如下:

类是引用类型,结构是值类型

结构不支持继承

结构不能声明默认的构造函数

 

在结构体中新增方法如下:

public void Display()

        {

            Console.WriteLine("Book Title:{0}", title);

            Console.WriteLine("Book Author:{0}", author);

            Console.WriteLine("Book Subject:{0}", subject);

            Console.WriteLine("Book Id:{0}", book_id);

    }

在Main方法中添加如下代码:

//调用结构中方法显示相关信息

    Console.WriteLine("调用结构中方法显示相关信息:");

    foreach (Books b in books)

    {

        b.Display();

        Console.WriteLine("------------------------------");

}

编译运行后的结果如下:

 

C#枚举(Enum)

枚举是一组命名整型常量。它是使用enum关键字声明的。

C#枚举是值数据类型。也就是说枚举包含自己的值,并且是不可以继承的。

 

声明emum变量语法:

enum <enum_name>

{

enumeration list

};

enum_name指定枚举的名称

enumeration list是一个用逗号分隔的标识符列表

如:

enum Days {Sun,Mon,Tue,Wed,Thu,Fri,Sat};

在程序中添加一个枚举变量

//声明一个枚举变量

enum Days { Sun,Mon,Tue,Wed,Thu,Fri,Sat};

在Main方法中添加如下代码:

//枚举的使用

    int WeekdayStart = (int)Days.Mon;

    int WeekdayEnd = (int)Days.Fri;

    Console.WriteLine("WeekdayStart-Monday:{0}", WeekdayStart);

Console.WriteLine("WeekdayEnd-Friday:{0}", WeekdayEnd);

编译运行后的结果如下:

 

猜你喜欢

转载自blog.csdn.net/advent86/article/details/83058888