一、常量与枚举
Const 类型 常量名=常量值
在定义时赋值,在其它地方不允许赋值,即变量不可以被赋值。
1)枚举(enum):让我们定义一种类型,并且在定义这种枚举类型时,我们要指定这个类型的所有值。
a、语法:enum 自己起的类型名称{值1,值2,值3……值n};注意:定义枚举时,值不能是int类型。
b、枚举的定义,一般和类定义在同一个级别(即在命名空间下,也可以定义在方法或类中)。这样,在同一个命名空间下的所有的类都可以使用这个枚举了。
c、枚举的作用:限制用户不能随着赋值,只能在定义枚举时列举的值中选择,不需要死记每个枚举的值,只需选择相应的值。
d、注意:枚举类型的变量都可以强制转换成一个int类型,枚举的值在定义时是有一个默认编号的,编号从0开始,依次递增,当然也可以人为给枚举的值赋非0的值。
例子:
namespace ConsoleApplication1
{
enum Gender
{
男,
女
}
class Program
{
static void Main(string[] args)
{
Gender sex;
sex = Gender.男;
switch (sex)
{
case Gender.男:
Console.WriteLine("您是男性");
break;
case Gender.女:
Console.WriteLine("您是女性");
break;
}
Console.ReadKey();
}
}
}
e、如果把一个字符串转换成枚举类型:
(自定义枚举量)(Enum.Parse(typeof(自定义枚举量),"待转换的字符串"));
例子:更改上面的例子,由用户自己输入性别,并将“自枚”转换成枚举类型
namespace ConsoleApplication1
{
enum Gender
{
男,
女
}
class Program
{
static void Main(string[] args)
{
Gender sex;
Console.WriteLine("请输入您的性别?");
string str=Console.ReadLine();
try
{
sex = (Gender)(Enum.Parse(typeof(Gender),str));
Console.WriteLine("您输入的性别为:"+ sex);
}
catch
{
Console.WriteLine("您的输入有误!");
}
Console.ReadKey();
}
}
}
二、凡是要得到用户输入的内容,变量必须是String类型,用int类型的话会出错。
Console.WriteLine()在控制台上输出提示信息
Console.ReadLine():用于接收用户的输入,要定义一个字符串变量来接收并存储用户输入的
值。Console.ReadKey():则表示等待用户按任意键后关闭窗体
例子:获取用户输入的内容,并实现与用户的交互性
string input;
Console.WriteLine("请输入您喜欢吃的水果:");
input = Console.ReadLine();//获取用户输入的内容,并实现与用户的交互性
Console.WriteLine("这么巧啊,我也喜欢吃{0}!", input);
三、转义字符:它是一个字符,形式"\+特定字母"组成.什么时候用?当我们需要在字符串输入
一些特殊字符时,比如:半角引号,换行、退格等。
C#常用的转义字符有:
转义符 字符名
\' 单引号
\" 双引号
\\ 反斜杠
\0 空字符
\a 感叹号
\b 退格
\f 换页
\n 新行
\r 回车
\t 水平 tab
\v 垂直tab
特殊情况:在字符串前加"@"符号有两种意义:a、字符串中如果有\,则不再理解为转义符
b、使字条串可以换行。此时,若要在字条串上显示一个双引号,则应连续输出一对双引号代
表一个双引号。
eg1:C#中的字符串要用""引起来
Console.WriteLine("C#中的字符串要用\"\"引起来。");
//运行结果:C#中的字符串要用""引起来。
分析:假如不加转义符"\"的话,第一个双引号与第二个配对而不是与最后一个双引号配对。则要使用双引号必须借助转义符"\"。
eg2:\t制表符的作用
Console.WriteLine("1\t2\t3\t4\t5\t");
Console.WriteLine("1\t22\t333\t4444\t55555\t");
四、算术运算符与算术表达式
1) C#中有五种算术运算符:+、-、*、/(乘)、%(求模或求余),要求:参与运算的两个操作数
的类型必须相同。运算后的结果也与操作数类型一致。
2)优先级:先乘除,后加减。有括号先算括号里的,相同级别的从左至右运算。若要改变计
算的优先级,则可以用小括号改变表达式的优先级。小括号可以无限制地套用,但必须成对出现。
3)发生自动转换(隐式)的条件:
a、参与运算的两个数据数据类型必须相兼容(两边同为数字,不能出现一边是字符串的情况)
b、必须一边的数据类型表示范围小,一边范围大,并且把小的转向大的时不会丢失精度。
4)对于表达式,如果一个操作数为double型,则整个表达式可提升为double型。
例子:(自己边看视频边练习)
eg1:有一个操作数为double型,则整个表达式可提升为double型
int a = 10, b = 3;
int mod = a%b;
double ys = a/b;
double ys2 = 1.0 * a / b;
Console.WriteLine("余数mod为:{0} 商ys为:{1} 商ys2为:{2}", mod, ys, ys2);
五、逻辑表达式和关系表达式
1)关系表达式的运算结果为bool类型,只有true和false两个值
2)逻辑运算符有三个:&&(与)、||(或)和!(非)
例子: Console.WriteLine("请输入一个年份:");
int year = Convert.ToInt32(Console.ReadLine());
bool result = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
Console.WriteLine(result);
六、try...catch...的用法
try
{
把有可能出现错误的代码写在这里
}
catch
{
出错后的处理
}
上面的程序执行规则:
如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch后的内容;假如有错,则立即执行catch中的代码。
例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int max = 0;
int number = 0;
string input = "";
do
{
try
{
Console.WriteLine("请输入一个数:");
input = Console.ReadLine();
number = Convert.ToInt32(input);
if (number > max)
{
max = number;
}
}
catch
{
if (input != "end")
{
Console.WriteLine("输入非法数据,程序结束!");
input = "end";
}
}
} while (input != "end");
Console.WriteLine("最大值是:{0}", max);
Console.ReadKey();
}