C# 常量、枚举、结构

2021/9/11 17:04:45

本文主要是介绍C# 常量、枚举、结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

常量

使用关键字const修饰即可:

  • const int num =32;

枚举

创建枚举变量方式:

[public] enum Gender
{
    man,
    woman,
    male,
    female
}
[public] enum QqState
{
    Online=4,
    Offline=2,
    Busy=30,
    QMe=1
}
//[public] 表示可选

Remark:枚举类型需要放置在命令空间或者里面,不能放在Main函数里面,大多放在命令空间

枚举类型与其他类型的转换

枚举类型与int类型的转换

将枚举类型强制转换成为int类型,需要注意int类型和枚举类型是相互兼容的,所以可以通过强制类型转换的语法互相转换

当转换一个枚举中没有的值的时候,不会抛出异常,而是 直接将数字显示出来

枚举 ==> int

Gender gender = Gender.man;
Console.WriteLine(gender);
int num0 = (int)Gender.man;
Console.WriteLine(num0);
int num1 = (int)Gender.woman;
Console.WriteLine(num1);
int num2 = (int)Gender.male;
Console.WriteLine(num2);
Console.WriteLine((int)Gender.female);
//如果在枚举中设置了枚举变量的值,如这里将在枚举中设置 man=3,于是强转后man=3,后面几个则依次+1,即woman=4

int ==> 枚举

如果将int转为枚举类型时,枚举类型的大小包含这个int的值,则对应转换成该枚举变量,int的值在枚举类型大小值之外,则仍然是原来的int的值的大小

int n1 = 4;
Gender gender = (Gender)n1;
Console.WriteLine(n1);
Console.WriteLine(gender);

枚举 ==> string

枚举类型与string类型的转换,注意任何类型都可以转换成为string类型,利用ToString去转

Gender gender = Gender.woman;
Console.WriteLine(gender.ToString());

string ==> 枚举

前面介绍了Convert.ToInt32(), int.parse() ,int.TryParse()

如果字符串在枚举里没有对应的转换对象,对于整数而言直接返回数字,对于字符串(小数在这里也是字符串)程序不会中断但会在结果中显示没有找到

string s = "asddfas";
Gender gender2 = (Gender)Enum.Parse(typeof(Gender), s);
Console.WriteLine(gender2);

Remark :当手动给枚举指定数值时,可以任意指定枚举变量对应的数值

枚举练习

Q :选择您的QQ状态

A :

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请选择您的QQ状态,1-Online,2-Offline,3-Busy,4-QMe");
            string str= Console.ReadLine();
           
            switch (str)
            {
                case "1": 
                    QqState s1 = (QqState)Enum.Parse(typeof(QqState), str);
                    Console.WriteLine(s1);
                    break;
                case "2":
                    QqState s2 = (QqState)Enum.Parse(typeof(QqState), str);
                    Console.WriteLine(s2);
                    break;
                case "30":
                    QqState s3 = (QqState)Enum.Parse(typeof(QqState), str);
                    Console.WriteLine(s3);
                    break;
                case "4":
                    QqState s4 = (QqState)Enum.Parse(typeof(QqState), str);
                    Console.WriteLine(s4);
                    break;

            }
            #endregion
        }
    }
    public enum QqState
    {
        Online=1,
        Offline,
        Busy,
        QMe
    }
}

结构

结构可以帮助我们一次性声明多个不同类型的变量,放在命令空间里

语法:

[public] struct nameofStruct(结构名)
{
    成员;
}

public struct Person
{
    string name;
    int age;
    char gender;
}

结构练习

using System;
namespace ConsoleApp1
{
	public struct Mycolor
	{
		public int _red;
		public int _green;
		public int _blue;

	}
	class hello
	{
		static void Main(string[] args)
		{
			//定义一个结构叫Mycolor,有三个成员变量,分别定义为int类型的red,green,blue
			//声明一个Mycolor类型的变量,并对其成员赋值,是其表示一个红色
			Mycolor mc;
			mc._red = 255;
			mc._blue = 0;
			mc._green = 0;

		}

	}
}
using System;
//using system.collections.generic;
//using system.linq;
//using system.text;
//using system.threading.tasks;

namespace ConsoleApp1
{
    public struct Person
    {
        //使用 _ 是为了区分字段和变量
        public string _name;//字段,可以存很多值,不叫变量(只能存储一个值)
        public int _age;
        public Gender _gender;

    }
    public enum Gender
    {
        男,
        女
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person zsPerson;
            zsPerson._name = "张三";
            zsPerson._age = 18;
            zsPerson._gender = Gender.男;

            Person lsPerson;
            lsPerson._name = "李四";
            lsPerson._age = 19;
            lsPerson._gender = Gender.女;
        }
    }
}


这篇关于C# 常量、枚举、结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程