diff --git a/README.md b/README.md index 67fe3ce..6b3bc90 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Quick Reference [Ansible](./docs/ansible.md) [CMake](./docs/cmake.md) +[C#](./docs/cs.md) [Django](./docs/djiango.md) [FFmpeg](./docs/ffmpeg.md) [LaTeX](./docs/latex.md) @@ -32,6 +33,7 @@ Quick Reference [Bash](./docs/bash.md) [C](./docs/c.md) +[C#](./docs/cs.md) [Dart](./docs/dart.md) [Docker](./docs/docker.md) [Dockerfile](./docs/dockerfile.md) diff --git a/docs/cs.md b/docs/cs.md new file mode 100644 index 0000000..dae36e7 --- /dev/null +++ b/docs/cs.md @@ -0,0 +1,200 @@ +C# 备忘清单 +=== + +提供基本语法和方法的 C# 快速参考备忘单 + +入门 +-------- + +### Hello.cs + +```cs +class Hello { + // main method + static void Main(string[] args) + { + // 输出: Hello, world! + Console.WriteLine("Hello, world!"); + } +} +``` + +编译运行(确保在项目目录下) + +```shell +$ dotnet run +Hello, world! +``` + +### 变量 + +```cs +int intNum = 9; +long longNum = 9999999; +float floatNum = 9.99F; +double doubleNum = 99.999; +decimal decimalNum = 99.9999M; +char letter = 'D'; +bool @bool = true; +string site = "quickref.me"; +var num = 999; +var str = "999"; +var bo = false; +``` + +### 原始数据类型 + +数据类型 | 尺寸 | 范围 +:- | - | - +| `int` | 4 bytes | -2^31^ ^to^ 2^31^-1 | +| `long` | 8 bytes | -2^63^ ^to^ 2^63^-1 | +| `float` | 4 bytes | 6 ^to^ 7 decimal digits | +| `double` | 8 bytes | 15 decimal digits | +| `decimal` | 16 bytes | 28 ^to^ 29 decimal digits | +| `char` | 2 bytes | 0 ^to^ 65535 | +| `bool` | 1 bit | true / false | +| `string` | 2 bytes per char | _N/A_ | + + +### 注释 + +```cs +// 单行注释 +/* 多行 + 注释 */ +// TODO:向 Visual Studio 中的任务列表添加注释 +/// 用于文档的单行注释 +/** 多行 注释 + 用于文档 **/ +``` + +### Strings + +```cs +string first = "John"; +string last = "Doe"; +// 字符串连接 +string name = first + " " + last; +Console.WriteLine(name); // => John Doe +``` + +查看: [Strings](#c-字符串) + +### User Input + +```cs +Console.WriteLine("Enter number:"); +if(int.TryParse(Console.ReadLine(),out int input)) +{ + // 输入验证 + Console.WriteLine($"You entered {input}"); +} +``` + + +### 条件句 + +```cs +int j = 10; +if (j == 10) { + Console.WriteLine("I get printed"); +} else if (j > 10) { + Console.WriteLine("I don't"); +} else { + Console.WriteLine("I also don't"); +} +``` + +### 数组 + +```cs +char[] chars = new char[10]; +chars[0] = 'a'; +chars[1] = 'b'; +string[] letters = {"A", "B", "C"}; +int[] mylist = {100, 200}; +bool[] answers = {true, false}; +``` + +### 循环 + +```cs +int[] numbers = {1, 2, 3, 4, 5}; +for(int i = 0; i < numbers.Length; i++) { + Console.WriteLine(numbers[i]); +} +``` + +--- + +```cs +foreach(int num in numbers) { + Console.WriteLine(num); +} +``` + +C# 字符串 +---------------- + +### 字符串连接 + +```cs +string first = "John"; +string last = "Doe"; +string name = first + " " + last; +Console.WriteLine(name); // => John Doe +``` + +### 字符串插值 + +```cs +string first = "John"; +string last = "Doe"; +string name = $"{first} {last}"; +Console.WriteLine(name); // => John Doe +``` + +### 字符串成员 + + +成员 | 说明 +:- | - +`Length` | 返回字符串长度的属性 +`Compare()` | 比较两个字符串的静态方法 +`Contains()` | 确定字符串是否包含特定的子字符串 +`Equals()` | 确定两个字符串是否具有相同的字符数据 +`Format()` | 通过 {0} 表示法和使用其他原语格式化字符串 +`Trim()` | 从尾随和前导字符中删除特定字符的所有实例。 默认删除前导和尾随空格 +`Split()` | 删除提供的字符并从两侧的剩余字符中创建一个数组 + + +### 逐字字符串 + +```cs +string longString = @"I can type any characters in here !#@$%^&*()__+ '' \n \t except double quotes and I will be taken literally. I even work with multiple lines."; +``` + + +### 成员示例 + +```cs +// 使用 System.String 的属性 +string lengthOfString = "How long?"; +lengthOfString.Length // => 9 +// 使用 System.String 的方法 +lengthOfString.Contains("How"); // => true +``` + +杂项 +----------- + +### 一般 .NET 条款 + + +条款 | 定义 +:- | - +Runtime | 执行给定的已编译代码单元所需的服务集合 +Common Language Runtime (CLR) | 主要定位、加载和托管 .NET 对象。
CLR 还处理内存管理、应用程序托管、线程协调、执行安全检查和其他低级细节 +Managed code | 在 `.NET` 运行时编译和运行的代码。 C#/F#/VB 就是例子 +Unmanaged code | 直接编译为机器代码且不能由 .NET 运行时直接托管的代码。
不包含空闲内存管理、垃圾收集等。从 C/C++ 创建的 DLL 就是示例 + \ No newline at end of file diff --git a/scripts/assets/cs.svg b/scripts/assets/cs.svg new file mode 100644 index 0000000..e6e11be --- /dev/null +++ b/scripts/assets/cs.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file