语法1
1、类型转换
- Convert:用于两个类型不兼容时进行转换,例如string类型转换成int或double类型。 注意,用convert进行转换时,面上一定要过得去。例如:string = “123ad”,此时就无法转换成int或double。
//1.将字符串转换成int或者double类型
string s = "123";
int n = Convert.ToInt32(s);//输出123
double d = Convert.ToDouble(s);//输出123
//2.注意:进行convert类型转换时,一定要注意面上要过得去
string s = "123ab";//此时就无法转换成int或者double类型
//3.我们还可以进行很多类型转换
Convert.ToChar
Convert.ToDecimal
Convert.ToDate等等
- Parse:
- 数据类型.Parse:与convert用途相似,但是比convert效率更高。
//基本语法:数据类型.Parse
/* char.parse
decimal.parse
double.parse */
//使用Parse进行转换,成功了就成功了,不成功的话就抛异常
int num1 = int.Parse("123")
Console.WriteLine(num1);//输出123
int num2 = int.Parse("123ab");
Console.WriteLine(num2);//这个时候就出现异常了
2. 数据类型.TryParse:尝试去转换,它是一个方法。运行效率比Parse和Convert更高。
//数据类型.TryParse
int number = 0;
bool b = int TryParse("123",out number);//可以转换成整数,返回ture,同时number为123
COnsole.WriteLine(b);//输出ture
Console.WriteLIne(number);//输出123.
int number = 0;
bool b = int TryParse("123ab",out number);//不可以转换成整数,就返回false,number还是为0
COnsole.WriteLine(b);//输出false
Console.WriteLIne(number);//输出0.
//不能转换时,也不会抛出异常,但是会返回一个bool类型的数据。
2、加加减减
- ++:分前++和后++,但是两者的作用都是使这个变量加一。区别表现在表达式中,如果是前++,则先给变量自身加一,然后在进行运算;如果是后++,则先用原值进行运算,然后再进行变量自身加一
- --:分前--和后--,但是两者的作用都是使这个变量减一。区别与++类似。
3、异常捕获
- 异常捕获:语法上没有错误,但在程序运行的过程中,由于某些原因程序出现了错误,不能再正常的运行。
- try-catch:用于检测代码中的异常。
语法:
try
{
可能会出现异常的代码;
}
catch
{
出现异常后要执行的代码;
}
执行过程中,如果try中的代码没有出现异常,那么catch中的代码就不会执行。
如果try中的代码出现了异常,出现异常的代码后面还有一百行都不会执行了,而是直接跳到catch
中执行代码。
4、常量
- 声明常量的语法:const 变量类型 变量名 = 值
- 声明常量后,就不能被重新赋值。
5、枚举
- 语法:[public] enum 枚举名 { 值1,值2,值3,.... }
声明枚举的语法:
[public] enum 枚举名
{
值1,
值2,
值3,
......
}
使用方式:枚举名 变量名 = 枚举名.里面的值
public:访问修饰符,哪都可以访问
enum:关键词,声明枚举的关键词
枚举名:要符合Pascal命名规范
将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
枚举的本质就是一种数据类型,可以储存数据
- 枚举类型与string和int类型的转换
//先声明枚举
publie enum QQState
{
OnLine,
OffLine,
Leave,
Busy,
QMe
}
//引用时:变量 = 枚举名.里面的值
//1.枚举类型可以跟int类型互相转换,枚举类型跟int类型是最兼容的
QQState state = QQState.OnLine;
int n = (int)state;
Console.WriteLine(n);//输出0
Console.WriteLine((int)QQState.OffLine);//输出1
Console.WriteLine((int)QQState.Leave);//输出2
Console.WriteLine((int)QQState.Busy);//输出3
Console.WriteLine((int)QQState.QMe);//输出4
如果让OnLine=2的话,输出后为2,3,4,5,6,如果再此的基础上,加上Leave=5,
输出后就变成了2,3,5,6,7
//2.int类型强转成枚举类型
int n1 = 8;
QQState state = (QQState)n1;
Console.WriteLine(state);//转换的数字与声明枚举中无对应的话,就直接输出本值,如果有对应的值,就输出那个在枚举中的值。
//3.枚举类型转换成string类型
QQState state = QQState.OnLine;
string s = state.ToString();
Console.WriteLine(s);//输出后为OnLine。
//任何类型都可以转换成string类型,可直接调用ToString().
//4.string类型转换成枚举类型。
//语法:(要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串")
string s = "0"; //利用parse()方法的目的就是为了让它帮助我们将一个字符串转换成对应的枚举类型。
QQState state = (QQState)Enum.Parse(typeof(QQState),s);//输出OnLine
//如果转换的字符串是数字,则就算枚举中没有,也不会抛出异常
//如果转换的字符串是文本,如果枚举中没有,则会抛出异常。
6、结构
- 结构可以帮助我们一次性声明多个不同的变量。
/* 语法:
****[public] struct 结构名
****{
变量1;//此时是字段,不是变量,命名时加上下划线_
变量2;
....
}
****写在命名空间下面,谁都可以调用 */
public struct Person
{
public string _name;//字段
public int _age;
public char _gender;
}//加上public,对所有的值公开
Person zsPerson;
zsPerson._name = "张三";
zsPerson._age = 21;
zsPerson._gender = '男';