前言
友友们好,本文为是 C# 入门的学习知识,包括笔者C#学习过程中的认识和心得。
这篇笔记整理花费一周时间,可以收藏拿来当作实际开发的 “划重点” 。由于内容中并不包含传统C语言本身的基础特性和基本语法,因此本文更适合有 C/C++ 基础的同学食用。或是有 C# 经验的小伙伴进行自查。
如果你对 C/C++ 感兴趣,或者在学习 C# 前需要想要了解大概的学习路线,可以参考我的另一篇博文:《C、C++、C# 我全都要!无痛学习经验分享》
初学难点提要
以下部分内容属于笔者初学时期略微难啃一点的内容,帮你挑出来了。建议同学们重点照顾:
5、命令行输入输出:Write相关内容
6、数据格式转换:Parse法,把字符串转化为对应的类型(比较容易忘)
9、二维数组(C#不同于 C/C++ 的表示方法)
11、值类型和引用类型
“Xiaochou x1” 不会调用构造,“Xiaochou x1 = new Xiaochou()” 才会
14、可变长参数 params 关键字函数
21、“只外部获取,不外部修改” 的成员变量——成员属性(成员变量的加强版)
这个章节要注意名为 name 和 Name 成员变量的区别,文章正文会体现
name:受保护的普通成员变量
Name:对外可访问的成员属性“接口”
23、索引器(属于高级语法)
public Person this [int index]
27、扩展方法
static class Add {
public static int IntAddOne(this int thisval) {
return thisval + 1;
}
}
其中,对 Add 类有 static 要求,对 IntAddOne 有 public static 的要求。
其中的 this int, int 是扩充的那个类,任意变量名取什么都行。
29、分部类:partial,把一个类分成几部分声明 partial class Person
36、密封类 / 抽象类
环境搭建
一、新建项目
笔者使用的是VS2019,实测2015以上版本也可以兼容本篇内容。
进入修改,安装.NET桌面应用 → .NET SDK,之后再打开VS2019
二、新建解决方案下的项目
注意不是新建项=.=
是新建项目!项目!每个解决方案下可以新建多个项目
进入到如下示例程序,运行显示HelloWorld,则环境配置完毕。
笔记正文
1、学会两个最基本的快捷键——快捷注释
ctrl K+C 注释
ctrl K+U 去注释
F12 跳转到 函数/类/命名空间 的声明
2、认识代码块、函数块和命名空间
这个代码用来输出Hello World
引用了一个工具包 System,其中 System 是通过:
namespace System{ ... }
这种方式定义的一个巨大的工具包,内部是各种系统自带的函数的声明。
3、查看函数或类的定义(F12)
当我们想查看一个函数或类的定义,可以选择它,按 F12 进行跳转。
4、region(代码块的折叠)
使用 region 指令,可以将一段代码折叠成一个独立的区域,这个区域可以包含多个代码块,例如类定义、属性、方法等。在 Visual Studio 中,可以通过单击左侧的减号来折叠或展开区域,也可以使用快捷键 Ctrl+M+M 来切换区域的折叠状态。
5、输入输出
Console.WriteLine("Hello World!");
string sin = Console.ReadLine(); // 等效于 cin <<
Console.WriteLine("OK"); // 等效于 cout <<
Console.ReadKey(); // 监听一个按键消息。如果有任何按键立刻释放阻塞
Console.WriteLine(" Detected.");
6、数据类型转换
数据类型转换的本质不仅仅是将相同长度的数据放在不同的容器中,而且是根据数据类型的范围和精度要求进行的。在C#中,数据类型分为值类型和引用类型。
通常情况下,值类型的数据(例如 int、double、struct 等)可以直接进行类型转换。而引用类型的数据(例如class、interface、delegate)不建议用强制类型转换,因为转换的结果可能引发空指针。标准的转换方式是通过容器 as 成其他类型,这点在后续进阶过程中会学到。
具体的转换方法:
隐式转换:由编译器自动实现的默认转换。
显示转换:
1)强转,同C语言强转方法(在C#中较少使用)
2)Parse法,把字符串转化为对应的类型
语法: vartype.Parse("str") , eg: int.Parse("123");
string inp = Console.ReadLine(); // 等于 cin
Console.WriteLine(inp);
Console.WriteLine("result is:" + (int.Parse(inp)&#