基本架构
展示VS2019给我的初始代码作为参考,之后会以其作为例子。1
2
3
4
5
6
7
8
9
10
11
12using System;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
命名空间/名称空间 (namespace)
还就那个using namespace std
概念
是.NET中提供应用程序代码容器的方式,唯一地标识代码及内容。
使用 (using)
using …
1 | using System; |
对命名空间的使用。
using static …
C# 6 的新增关键字,允许将静态成员直接包含到C#程序的作用域中。(什么是静态成员?请看之后的 面向对象 )
声明 (declaration)
1 | namespace ConsoleApp5 |
声明了一个名为ConsoleApp5的命名空间。
常用的命名空间
面向对象
不会面向对象的都是不会面向对象的(意味深)
不做项目/工程可能会觉得这一部分有些晦涩,但在不断练习后,就会对其有新的认识。
与面向过程的区别
蛋炒饭,盖浇饭
类(class)
现实世界向程序的抽象投影。1
2
3public class People{
...
}
实例/实例化
1 | People p = new People(); |
p就是People的一个实例,这个过程称为实例化。
(抽象变具体)
成员(member)
三大类:字段(类似变量),属性(?),方法(类似函数)
静态成员(static member)
从属于类而不从属于实例,当类被加载时,静态成员即被加载。
通过类直接调用,不能通过实例调用。
静态方法只能调用静态属性。
工具类中就会常用静态成员,无需实例化直接使用,如静态类Math。
访问级别
| 关键字 | 相应级别 |
|---|---|
| private | |
| protect | |
| internal | |
| public |
显然,上述的访问级别是不断递增的。
字段
只读字段(readonly)
只能通过构造器来修改只读字段的值。1
2
3
4
5
6
7
8public class People{
public People(int s){
sex=s;
}
public readonly int sex;
}
属性
1 | public class People{ |
与正常的字段相比多了一个set来筛选,防止字段被污染。
在Visual Studio中,可以通过propfull + Tab + Tab快速生成一个属性代码块。(VS,永远滴神!)
方法
构造器
1 | public class People{ |
构造函数与类同名,在实例化时被调用,进行实例的初始化。
可以通过方法(函数)的重载,来写出多个不同的构造函数供使用。
类的继承
1 | public class XiaoMing:People{ |
语法子类:父类(基类)
继承了父类的除构造器外的所有 某一访问级别?的成员。
一个子类只能拥有一个父类 三姓家奴能不能爪巴
子类访问级别绝对不能高于父类,属于一种保护机制。
参考资料
- C#入门经典(第8版),Benjamin Perkins
- 菜鸟教程 https://www.runoob.com/csharp/csharp-tutorial.html
- Microsoft C# Reference https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/
- XJTUMSC 技术例会