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