C#枚举 枚举和int以及string类型之间的转换 结构 重载 全局变量
1 枚举
语法:
public enum 枚举名
{
值1,
值2,
值3,
........
}
public:访问修饰符。公开的公共的,哪都可以访问。
enum:关键字,声明枚举的关键字
将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
枚举就是一个变量类型 ,int--double string decimal.
只是枚举声明、赋值、使用的方式跟那些普通的变量类型不一样。
声明:
public enum QQState
{ OnLine,
OffLine,
Leave,
Busy,
QMe //最后一个成员的逗号可加可不加
}
使用:
QQState state = QQState.OnLine;
2 枚举和int以及string类型之间的转换
namespace _04枚举和int以及string类型之间的转换
{
public enum QQState
{
OnLine=1, //不赋值的话,从0 开始
OffLine,
Leave,
Busy,
QMe
}
class Program
{
static void Main(string[] args)
{
// 枚举类型默认可以跟int类型互相转换 枚举类型跟int类型是兼容的
// 1 将枚举类型强转成int类型
QQState state = QQState.OnLine;
int n = (int)state;
Console.WriteLine(n); //输出1
Console.WriteLine((int)QQState.OffLine); //输出2
Console.WriteLine((int)QQState.Leave); //输出3
Console.WriteLine((int)QQState.Busy); //输出4
Console.WriteLine((int)QQState.QMe); //输出5
Console.ReadKey();
//2 将int类型强转为枚举类型
int n1 = 3;
QQState state = (QQState)n1;
Console.WriteLine(state); //输出Leave
Console.ReadKey();
// 3 所有的类型都能够转换成string类型(调用ToString)
int n1 = 10;
double n1 = 3.14;
decimal n1 = 5000m;
string s = n1.ToString();
Console.WriteLine(s); //分别 输出10/3.14/5000
Console.ReadKey();
// 4将枚举类型转换成字符串类型
QQState state = QQState.OnLine;
string s = state.ToString();
Console.WriteLine(s); //输出OnLine
Console.ReadKey();
// 5 将字符串类型转换为枚举类型
//如果转换的字符串是数字,在枚举QQState中没有,则显示数字8
//如果转换的字符串是文本,在枚举QQState中没有,则抛异常
string s = "1"; // 1
string s=“Online” // 2
string s = "ABCDEFG"; //3
string s = "8"; // 4
//Convert.ToInt32() int.parse() int.TryParse()
//调用Parse()方法的目的就是为了让它帮助我们将一个字符串转换成对应的枚举类型
//(要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串");
QQState state = (QQState)Enum.Parse(typeof(QQState), s);
Console.WriteLine(state);
Console.ReadKey();
结果:1 和2 输出 Online
3 抛异常
4 输出8
// 6 枚举练习
//提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。
//再次打印到控制台中
Console.WriteLine("请选择您的qq在线状态 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe");
string input = Console.ReadLine();
switch (input)
{
case "1": QQState s1 = (QQState)Enum.Parse(typeof(QQState), input);
Console.WriteLine("您选择的在线状态是{0}",s1);
break;
case "2": QQState s2 = (QQState)Enum.Parse(typeof(QQState), input);
Console.WriteLine("您选择的在线状态是{0}",s2);
break;
case "3": QQState s3 = (QQState)Enum.Parse(typeof(QQState), input);
Console.WriteLine("您选择的在线状态是{0}",s3);
break;
case "4": QQState s4 = (QQState)Enum.Parse(typeof(QQState), input);
Console.WriteLine("您选择的在线状态是{0}", s4);
break;
case "5": QQState s5 = (QQState)Enum.Parse(typeof(QQState), input);
Console.WriteLine("您选择的在线状态是{0}", s5);
break;
}
Console.ReadKey();
}
}
}
3、结构
可以帮助我们一次性声明多个不同类型的变量。
语法:
publicstruct Person // 结构名
{
public string _name;
public string _age;
publicstring _gender; 成员;//字段
}
class Program
{
static void Main(string[] args)
{
// 定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄 性别用枚举类型
//声明两个Person类型的变量,分别表示张三 男 18岁/ 小兰 女 16岁
Person zsPerson;
zsPerson._name = "张三";
zsPerson._gender = Gender.男;
zsPerson._age = 18;
Person xlPerson;
xlPerson._name = "小兰";
xlPerson._gender = Gender.女;
xlPerson._age = 16;
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生",zsPerson._name,zsPerson._age,zsPerson._gender);
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生",xlPerson._name,xlPerson._age,xlPerson._gender);
Console.ReadKey();
}
}
}
变量在程序运行期间只能存储一个值,而字段可以存储多个值。
字段在定义时要在前面加下划线,以区别于变量
4 重载
概念:方法的重载指的就是方法的名称相同给,但是参数不同。
参数不同,分为两种情况
1)、如果参数的个数相同,那么参数的类型就不能相同。
2)、如果参数的类型相同,那么参数的个数就不能相同。
***方法的重载跟返回值没有关系。
public static void M(int n1, int n2)
{
int result = n1 + n2;
}
public static double M(double d1, double d2)
{
return d1 + d2;
}
public static void M(int n1, int n2, int n3)
{
int result = n1 + n2 + n3;
}
public static string M(string s1, string s2)
{
return s1 + s2;
}
5 全局变量
c#中没有全局变量的概念,可以通过类的静态字段或属性来模拟C或C++中的全局变量。
1)"全局变量"的定义方法:
1 2 3 4 5 6 |
// 在MyVars类中定义两个“全局变量” public class MyVars { // Count是静态字段 public static int Count; } |
2)使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Program { static void Main(string[] args) { // 赋值 MyVars.Count = 100; ShowVars(); }
static void ShowVars() { // 显示 Console.WriteLine("MyVars.Count = {0}", MyVars.Count); } |
上一篇: c#中枚举的介绍