C# - enum枚举(+类型转换 +属性)

Enum:枚举(建立int数据与string数据之间的映射,可以通过Convert转换为string/int);


语法:string在左,int在右;

注意:

1. 变量名可以为中文,无需加引号;

2. 可以(Week)2 强制将整形2转换为枚举类型;

public enum Week:sbyte
{
    //(int)Week.Monday
    //默认从0开始
    //sbyte(单字节带符号整形)
    //byte(单字节不带符号整形)
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
}

调用

Convert.ToString(Week.Sunday)

Convert.ToInt16(Week.Monday)



数据转换

Convert.ToInt/ToString...(variable)          //包括了常见类型之间的互换

:enum推荐使用ToString()和(int)

int a = (int)45.25         //浮点型强制转化

Console.ReadKey().Key.ToString()         //读取键盘输入的一个字符



应用

DateTime类中的DayOfWeek属性(enum):

DateTime t1 = DateTime.Now;
DayOfWeek week = t1.DayOfWeek;
Console.WriteLine((int)week);



//DateTime t2 = new DateTime(2019,9,8,12,23,45);
//Console.WriteLine(t2.ToString());
//Console.WriteLine(t2.Year);


Class与Enum的嵌套:

1. 不能够通过实例访问类中的枚举变量

2. class.enum.value类型访问

3. 如何使实例能够访问enum中的变量?(为enum内部变量提供属于实例的接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace day0908._0906
{
    class Week
    {
        public enum week
        {
            Sunday = 0,
            Monday = 1,
            Tuesday = 2,
            Wednesday = 3,
            Thursday = 4,
            Firday = 5,
            Saturday = 6,
        }
        private int data = 99;
        
        //如何通过now.Monday调用上述week中的指定数据并返回

        public week Monday {
            get { return week.Monday; }
        }
        public week Sunday{
            get { return week.Sunday; }
        }
        public week Tuesday
        {
            get { return week.Tuesday; }
        }
        public week Wednesday
        {
            get { return week.Wednesday; }
        }
        public week Thursday
        {
            get { return week.Thursday; }
        }
        public week Firday
        {
            get { return week.Firday; }
        }
        public week Saturday
        {
            get { return week.Saturday; }
        }

        public int Data {
            get { return data+1; }    //读权限
            set { data = value; }     //写权限
        }     //提供一个新的接口返回原来的值/私有值


        static void Main()
        {
            Week x0 = new Week();
            Console.WriteLine(x0.Monday);
            x0.Data = 999;
            Console.WriteLine(x0.Data);
            Console.WriteLine(Week.week.Monday);
        }
    }
}

上述使用了变量的另外一种声明方式/属性:({ set写权限+get读权限 }

0. 这种方式的变量必须在类中声明

1. private int data = 999;      ( 此时,data对实例可见,而且实例具有读写权限!

2. 允许在class中直接操作已存在变量(再赋值)

3. 可以设置一个只读变量(实例只读),初始值由get指定;

  • int data1 { get { return 10; } }
  • int data1 { get ; }           //取默认值0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值