前言
参考视频:https://www.bilibili.com/video/BV1sy4y1u7cw up主主页:https://space.bilibili.com/481436151?spm_id_from=333.788.b_765f7570696e666f.1 菜鸟教程:https://www.runoob.com/csharp/csharp-tutorial.html 微软文档:https://docs.microsoft.com/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}} };
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 b = a;
而若是struct则是值类型,则不会指向同一块地址空间
static void TestStuct(CVector2 cVec, ref SVector2 sVec) {}
这里有了继承接口的概念,且所有的类都继承自object(若其没有明确指出继承哪个类):
4. 常用数据结构,泛型,反射,宏
从上图代码可以看到Action和Func的区别以及delegate的用法。并且还有闭包的写法:
public delegate void Action<in T>(T obj);
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
int intVal = 10;
Action closure = () => {
intVal += 10;
};
closure();
5. 异常,操作符重载,其他
所有的异常的基类是Exception
这里有一个和Cpp不一样的地方:finally,无论是否抛出异常都一定会执行的语句。
|