1、数据类型
金钱类型:decimal,用来存储金钱,值后面要加上一个m
2、占位符
// 多填多出的没有用,少填报错
Console.WriteLine("第一个数字{0},第二个数字{1},第三个数字{2}",1,2,3);
3、交换两个int型的变量,要求不使用第三方变量
int n1 = 50;
int n2 = 30;
n1 = n1-n2;
n2 = n1+n2;
n1 = n2-n1;
4、接受用户输入
string s = Console.ReadLine();
5、转义符
删除前一个字符(在字符串的两端没有效果)
\ 表示一个
@"E:DocumentsDesktop1.txt" 取消在字符串中的转义作用
6、自动类型转换
我们要求等号两边的运算操作类型必须一致,如果不一致会发生隐式转换
1)小的转大的(大的转小的-->强制类型转换)
2)...
注意:***
int a = 10;
int b = 3;
double result = a/b; // 结果是3
int a = 10;
int b = 3;
double result = (a*1.0)/b; // 结果为3.33333333333333
占位符的妙用:
Console.WriteLine("{0:0.00}",result); // 表示保留2位小数
7、逻辑运算符
逻辑运算符两边放的一般都是关系表达式或者bool类型的值
&& 逻辑与
|| 逻辑或
! 逻辑非
8、字符串转int/double型
String a = "123";
double d = Convert.ToDouble(a);
int i = Convert.ToInt32(a);
9、语法结构
顺序结构:程序从Main函数进入,从上到下一行一行的执行
分支结构:if,else
选择结构:if else-if switch-case
循环结构:while do-while for foreach
if(判断条件){
// 和java一样
}else if(判断条件2){
}else{ // 如果有多个if判断,else只跟离它最近的if配对
}
10、异常捕获
try{
// 可能会出现异常的代码,出现异常后直接运行catch代码块,无论下面还有多少代码
}catch (Exception e){
// 出现异常后要做的处理
Console.WriteLine(e);
// throw; // 向外重新抛出异常,此时finally代码块不会执行
}finally{
// 发不发生异常都执行
}
11、switch-case
switch(变量或表达式的值){
case 值1:要执行的代码;
break;
case 值2:要执行的代码;
break;
case 值3:要执行的代码;
break;
.....
default:要执行的代码;
break;
}
将switch后面的值与case后面的值进行比较,如果相同则走要执行的代码,如果没有匹配的,则执行default后面的代码
12、循环
while循环:
while(循环条件){
循环体;
break; // 跳出当前循环
}
do-while循环:
do{
循环体
}while(循环条件){
// 先执行循环体,在进行判断循环条件。
// 先循环,在判断,最少执行一遍循环体
}
for循环
for (int i=0;i<10;i++){
continue; // 结束本次循环,进入下次循环
}
13、三元运算
1 > 2 ? true : false
14、声明常量
const int number = 10; // 不能被重新赋值
15、枚举
枚举就是一个变量类型(作用:存数据)
语法:
[public] enum 枚举名{
值1,
值2,
值3,
....
}
注:不能在main函数中声明枚举
1)命名空间下,类外面(所有类都可以使用这个枚举)
namespace ConsoleApp1
{
public enum Gender
{
男,
女
}
class Program
{
static void Main(string[] args)
{
Gender g1 = Gender.男;
Gender g2 = Gender.女;
Console.WriteLine((int)g1); // 将其将转为int型,输出的是它的序号0
Console.WriteLine((int)g2); // 1
Console.WriteLine((Gender)1); // 女
Console.WriteLine((Gender)0); // 男
Console.WriteLine((Gender)3); // 这个没有枚举类型,直接打印这个数字3
Console.WriteLine(typeof(Gender)); // ConsoleApp1.Gender
Console.WriteLine(Enum.Parse(typeof(Gender),"0")); // 将字符串转为枚举类型,与字符串转int/double不同是使用enum这个类进行转换的
Console.ReadLine();
}
}
}
16、结构
结构有个屌用??
可以帮我们一次性声明多个不同类型的变量
语法:
[public] struct xxx{
public string _name; // 不叫变量,叫字段
public int _age; // 规范,前面加_
...
}
17、数组
一次性存储多个相同类型的变量
声明数组的方式:
int nums = new int[10]; // 其中元素全是0
int nums2 = {1,2,3,4}
赋值方法;
nums[0] = 10086;
18、方法
函数就是将一堆代码进行重用的一种机制
语法:
[public] [static] 返回值类型 方法名([参数列表]){
方法体;
}
out参数
如果在一个方法中要返回多个不同类型的值,可以使用out参数
static void Main(string[] args)
{
int[] numbers = {1, 2, 3, 4, 5};
int max;
int min;
Test(numbers,out max,out min);
Console.WriteLine(max);
Console.WriteLine(min);
Console.ReadLine();
}
// max,min为多余的返回值
public static void Test(int[] numbers,out int max,out int min)
{
// 假设数组中第一个值为max,第二个值为min
max = numbers[0];
min = numbers[1];
}
ref参数
将值传递改成引用传递
static void Main(string[] args)
{
int a = 3;
Test(ref a);
Console.WriteLine(a); // 如果不加ref,打印的值为3;加上ref打印的值为5
Console.ReadLine();
}
public static void Test(ref int a)
{
a = a + 2;
}
params可变参数
可以传不定的参数,将其放进一个数组中
static void Main(string[] args)
{
Test(1,2,3);
}
public static void Test(params int[] list) // 在可变参数后面不能再加其它的参数
{
foreach (var i in list)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
19、return作用
1)立即结束这个方法
2)返回值