C#入门(一)

自用笔记。

VS2019使用基础

安装

Visual Studio 2019 Community

下载后双击打开->勾选.NET桌面开发->取消勾选详细信息里的可选功能

修改安装位置->取消勾选“安装后保留下载缓存”

修改主题和字体

护眼的VS2019黑色主题!

但我觉得还是Dark主题颜色比较好看,又改回Dark主题了。

创建项目

选择模板:控制台应用(.NET Framework)

设置项目名称、位置和解决方案名称->创建

基本语法

注释

单行注释

1
// 这里是注释

多行注释

1
2
3
4
5
/*1

2

3*/

快捷键

添加注释

Ctrl K+Ctrl C

取消注释

Ctrl K+Ctrl U

其他

每条语句末尾需要加分号。

代码块{}

程序从上到下执行。

如何执行:点击执行按钮或使用快捷键F5

输出的两种方法:Write() (不换行)和WriteLine()(会换行) 。

变量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
//创建变量
//创建了一个数据的容器,容器的名字叫做age, 容器的类型为int
//声明了一个变量,变量的名字是age
int age;
//往容器里面放东西 赋值
age = 10;
double age2;
char age3;
double height;
char sex;
double avg;

赋值要求:左右类型一致,并且右边的值所需要的容器大小<=左边的容器

字符串

1
2
3
String str="test";
String str2=@"C:\a\b\c";
String str3="123"+"456";

得到用户输入

1
2
3
String str = Console.ReadLine();
Convert.ToInt32(str);
Console.WriteLine(str + "-");

命名规范

由字母、数字和下划线组成,但不能以数字开头。

不能和关键字重名。

字符串格式化输出

1
2
Console.WriteLine(a + "+" + b + "=" + (a + b));
Console.WriteLine("{0}+{1}={2}", a, b, a + b);

条件语句

if语句

1
2
3
4
5
6
7
8
if(age<=16)
{
    Console.WriteLine("OK");
}else if(age<=20){
    Console.WriteLine("Well");
}else{
    Console.WriteLine("No");
}

switch语句

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
switch (number)
{
    case 1:
        Console.WriteLine("冰淇淋");
        break;
    case 2:
        Console.WriteLine("Tea");
        break;
    case 3:
        Console.WriteLine("Coffee");
        break;
}

简化

1
2
3
4
5
6
7
8
9
switch(day){
    case 1:
    case 2:
        Console.WriteLine("aa");
    case 3:
    case 4:
    case 5:
        Console.WriteLine("bb");
}

循环语句

while循环

1
2
3
while(条件表达式){
    //循环体
}

for循环

1
2
3
4
5
6
for(代码1; 代码2; 代码3){
	//循环体
}
for(初始化; 条件表达式; 增量表达式){
	//循环体
}

for循环的初始化条件和增量都是可选的。

do…while循环

1
2
3
do{
    //循环体
}while(条件表达式)

do…while会先执行一次循环体再判断。

同一个作用域下变量不能重名。

子作用域可以访问父作用域里的变量,但父作用域不能访问子作用域的变量。

总结

for确定循环次数。

while确定循环条件。

do…while循环体至少被执行一次。

continue和break

continue用来终止当前循环,继续下次循环。

break跳出当前循环

类型转换

1
2
3
4
5
6
7
8
byte a = 32;
int b = 200;
//b = a; //隐式转换
//a = b; //显式转换
int i = Convert.ToInt32("234");
double j = Convert.ToDouble("4.5");
string s1 = 123 + "";
string s2 = Convert.ToString(123);

数组

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
//1
int[] ages={34,12,23,34,56,74,22,21,25,64}
Console.WriteLIne(ages[1]);
//2
int[] ages;
ages = new int[];
//3
int[] ages = new int[10];
//4
ages = new int[5] {1, 2, 3, 4, 5};

字符串数组

1
2
3
4
5
string name="Micheal";
//Console.Write(name.length);
for(int i=0;i<name.length;i++){
    Console.WriteLine(name[i]);
}

字符串常用方法

1
2
3
4
5
6
7
8
9
string str1 = name.ToLower();
string str2 = name.ToUpper();
string str3 = name.Trim(); //去两边空格
string str4 = name.TrimStart(); //去前面空格
string str5 = name.TrimEnd(); //去后面空格
string[] strArray = name.Split(',');
foreach(string str in strArray){
    Console.WriteLine(str);-
}

使用Split()函数时提示无法将类型"string"转换为"char",需要把括号里的双引号改为单引号才不会报错。

方法(函数)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
//定义
static void VerifyUserName(string username){
    //功能实现
}
static void Main(string[] args)
{
    //调用
	VerifyUserName(username);
}

static int Add2(int[] array){
    int sum = 0;
    foreach(int temp in array){
        sum += temp;
    }
    return sum;
}

参数数组必须放在最后一个参数位置

函数重载

根据选择的不同参数类型调用同名不同函数。

递归函数

F(n) = F(n-1) + F(n-2)

常量

1
const int i = 100;

枚举类型

1
2
3
4
5
6
enum RoleType
{
	Mage, Archer, Assassin, Tank, Support, Warrior
}

RoleType roletype = RoleType.tank;

结构体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
struct struct_name{
	访问权限 type typename;
	访问权限 type typename;
}

struct StudentInfo{
    public int age;
    public string name;
    public int grade;
    public int id;
}

StudentInfo student1;
student1.age = 16;

结构体函数

1
2
3
4
5
6
7
8
struct Position{
    public double x;
    public double y;
    public double z;
    public void PrintPostition(){
        Console.WriteLine(x + "," + y + "," + z);
    }
}

委托

delegate是一种存储函数引用的类型。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
static double Multiply(double param1, double param2){
    return param1 * param2;
}
static double Divide(double param1, double param2){
    return param1 / param2;
}

delegate double MyDelegate(double param1, double param2);

static void Main(string[] args){
    Console.WriteLine(Multiply(2.3, 2));
    Console.WriteLine(Divide(4.5, 3));
    MyDelegate delegate1;
    delegate1 = Multiply;
    Console.WriteLine(delegate1(2, 4));
    delegate1 = Divide;
    Console.WriteLine(delegate1(6, 2.5));
}