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
欢迎访问小程序: