文章目录

  • 前言
  • 1. 基础类型,变量,函数
  • 2. 条件语句和循环语句
  • 3. 类,结构体,接口,继承
  • 4. 常用数据结构,泛型,反射,宏
  • 5. 异常,操作符重载,其他

前言

参考视频:https://www.bilibili/video/BV1sy4y1u7cw
up主主页:https://space.bilibili/481436151?spm_id_from=333.788.b_765f7570696e666f.1
菜鸟教程:https://www.runoob/csharp/csharp-tutorial.html
微软文档:https://docs.microsoft/zh-cn/dotnet/csharp/

1. 基础类型,变量,函数



数组也可以这样初始化:

int[] ary = new int[] {5, 3, 12, 7};


高精度向低精度转化要显示转化,否则会报错。


2. 条件语句和循环语句

!、&&、||,和C++一样。if、else基本用法一样。if-else也可以像cpp一样不加大括号执行下一行。switch-case-break-default都一样。enum用法一样。

互转形式如下面代码:

while、continue、break、do-while、for循环也和Cpp一样。

但是他的范围循环和cpp有点区别,不是for而是foreach:

int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定义一个2行2列2纵深的3维数组a
foreach(int i in a)
{
    Console .WriteLine (i);
}

3. 类,结构体,接口,继承




这里出现和cpp的区别了:C#也是有public、private、protected的,但是C#中结构体是值类型,class是引用类型,且class在堆中分配,struct在栈中分配:

class A{}

A a = new A(); // a 中相当于保存了地址
A b = a; // 此时 b 和 a 指向的是同一块地址空间

而若是struct则是值类型,则不会指向同一块地址空间

static void TestStuct(CVector2 cVec, ref SVector2 sVec) {}



这里有了继承接口的概念,且所有的类都继承自object(若其没有明确指出继承哪个类):

4. 常用数据结构,泛型,反射,宏









从上图代码可以看到Action和Func的区别以及delegate的用法。并且还有闭包的写法:

// Action  是系统内置(或者说预定义)的一个委托类型,它可以指向一个没有返回值且没有参数的方法。
// 系统内置如下:
public delegate void Action<in T>(T obj);

// Func 内置如下:
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);

// Action 闭包:
int intVal = 10;
Action closure = () => {
	intVal += 10;
};
closure();




5. 异常,操作符重载,其他


所有的异常的基类是Exception



这里有一个和Cpp不一样的地方:finally,无论是否抛出异常都一定会执行的语句。


更多推荐

C#快速入门