C#(十)之枚举类型与结构体

53 篇文章 1 订阅
22 篇文章 0 订阅

C#中的枚举类型结构体

枚举类型使用enum定义:

 // 枚举有值也有键。和数组类似,默认从0开始,依次加1.
        // 但是如果枚举中的几个元素被赋值,其之后的元素,都在其上加1
        // :后边的类型是指定枚举中数值(键值)的类型,默认int
        public enum Weekdays : int
        {
            one = 3,
            two,//4
            three,//5
            four,//6
            five,//7
            six = 12,
            seven//13
        }
        enum our {
            a = 1,
            b,
            c = 5,
            d,
            e
        }

枚举有值也有键。和数组类似,默认从0开始,依次加1.

但是如果枚举中的几个元素被赋值,其之后的元素,都在其上加1(原则上声明枚举不赋初始值)

:后边的类型是指定枚举中数值(键值)的类型,默认int

基本用法:实例

// 定义枚举类型的变量写法
Weekdays week = Weekdays.one;
if (week == Weekdays.one || week == Weekdays.seven)
{
    Console.WriteLine("你说的对");
}
// 并无实际意义,只做展示。

一些语法我觉得和PHP的数组差不多:有key值,也有value。

将数值转换为枚举中对应的值

// 将数值转换为枚举中对应的值
Weekdays today;
// 将3强制转换为枚举类型
today = (Weekdays)3;
Console.WriteLine(today);   // 输出one,

将枚举值转化为数值

Weekdays newtoday;
newtoday = Weekdays.seven;
int changetoday = (int)newtoday;
Console.WriteLine(changetoday); // 输出13

枚举类型是可以用来计算的

// 枚举类型可计算
Weekdays yesDay;
yesDay = Weekdays.three + 2;
Console.WriteLine(yesDay); // 输出five
  
/*枚举的计算属性*/
for (Weekdays i = Weekdays .one; i <= Weekdays .five; i++)
{
      Console.WriteLine(i);  // 7
}//*/
// 循环输出 one two three four five 
 
 
 
// 如果有的值是有默认值的情况下:
our bb = our.d;
Console.WriteLine((int)bb); // 输出6。这个没什么可说的

结构体:

官方给的C#结构体的特点:

1:结构可带有方法、字段、索引、属性、运算符方法和事件。(原则上不在结构体中声明方法)

2:结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义默认的构造函数。默认的构造函数是自动定义的,且不能被改变。

3:与类不同,结构不能继承其他的结构或类。

4:结构不能作为其他结构或类的基础结构。

5:结构可实现一个或多个接口。

6:结构成员不能指定为 abstract、virtual 或 protected。

7:当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。

8:如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

结构体使用struct来定义:

// 定义一个学生结构体
struct student {
    public int xuhao;
    public int age;
    public string name;
    public string birthday;
}

结构体把就好像是一个预定义的对象。需要使用的时候,实例化,赋值,调用就可以了。

结构体除了可以使用public定义变量之外,还可使用private定义变量。

// 定义一个学生结构体
struct student {
   private int xuhao;
   private int age;
   private string name;
   private string birthday;
   public void result(int t, int a, string s, string d)
    {
         xuhao = t;
         age = a;
         name = s;
         birthday = d;
     }
     public void display()
     {
         Console.WriteLine(name);
     }
}
static void Main(string[] args)
{
     // 使用设定好的结构定义一个学生
     /*gc.xuhao = 01;
     gc.age = 23;
     gc.name = "gc";
     gc.birthday = "2019-01-18";
     Console.WriteLine(gc);  // 输出的值为:gc.Program+student
     Console.WriteLine(gc.name); // 输出gc//*/
     student gc = new student();
  
     gc.result(01, 23, "gc", "2019-01-18");
     gc.display(); // 输出打印信息  gc
}

测试使用完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
  
namespace gc
{
    class Program
    {
        public enum Weekdays : int
                {
                    one = 3,
                    two,//4
                    three,//5
                    four,//6
                    five,//7
                    six = 12,
                    seven//13
                }
        enum our {
            a = 1,
            b,
            c = 5,
            d,
            e
        }
        // 定义一个学生结构体
        struct student {
            private int xuhao;
            private int age;
            private string name;
            private string birthday;
            public void result(int t, int a, string s, string d)
            {
                xuhao = t;
                age = a;
                name = s;
                birthday = d;
            }
            public void display()
            {
                Console.WriteLine(name);
            }
        }
        /* C#主要的运行函数,就是main函数 */
        static void Main(string[] args)
        {
            // 定义枚举类型的变量写法
            Weekdays week = Weekdays.one;
                        if (week == Weekdays.one || week == Weekdays.seven)
                        {
                            Console.WriteLine("你说的对");
                        }
             
                        Weekdays today;
                        // 将3强制转换为枚举类型
                        today = (Weekdays)3;
                        Console.WriteLine(today);   // 输出one,将数值转换为枚举中对应的值
             
             
                        Weekdays newtoday;
                        newtoday = Weekdays.seven;
                        int changetoday = (int)newtoday;
                        Console.WriteLine(changetoday); // 输出13 ,将枚举值转化为数值
             
                        // 枚举类型可计算
                        Weekdays yesDay;
                        yesDay = Weekdays.three + 2;
                        Console.WriteLine(yesDay); // 输出five
            /*枚举的计算属性*/
            /*for (week i = week.one; i <= week.five; i++)
            {
                Console.WriteLine(i);
            }//*/
            // 循环输出 one two three four five
            
            /*// 如果有的值是有默认值的情况下:
            our bb = our.d;
            Console.WriteLine((int)bb); // 输出6。这个没什么可说的//*/
            // 使用设定好的结构定义一个学生
            /*gc.xuhao = 01;
            gc.age = 23;
            gc.name = "gc";
            gc.birthday = "2019-01-18";
            Console.WriteLine(gc);  // 输出的值为:gc.Program+student
            Console.WriteLine(gc.name); // 输出gc//*/
            student gc = new student();
            gc.result(01, 23, "gc", "2019-01-18");
            gc.display(); // 输出打印信息  gc
        }
    }
}

有好的建议,请在下方输入评论。

欢迎访问个人博客
https://guanchao.site

欢迎访问小程序:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值