Skip to content

Commit

Permalink
chore: cs add async, linq
Browse files Browse the repository at this point in the history
Signed-off-by: i-curve <[email protected]>
  • Loading branch information
i-curve committed Feb 16, 2025
1 parent 872db98 commit 3c3a783
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
78 changes: 78 additions & 0 deletions CSHARP/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
- [II. 高级用法](#ii-高级用法)
- [1. 异常](#1-异常)
- [2. 容器](#2-容器)
- [3. Linq 语法](#3-linq-语法)
- [4. 异步](#4-异步)
- [III. 反射](#iii-反射)

<!-- /code_chunk_output -->
Expand Down Expand Up @@ -165,6 +167,82 @@ Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1,"a");
```

### 3. Linq 语法

Linq 是一种对一组数据进行处理操作的语法, IEnumerable 是一个接口, 可以通过 LINQ 语法对 IEnumerable 进行操作, 可以对数据进行过滤, 排序, 分组等操作, 提供了对组数据的扩展语法

- cs 委托

本质是一个函数变量, 可以把一个函数赋值给这个变量, 然后进行调用

```csharp
// 定以一个委托变量
delegate int aaa(int a, int b);
// 此时 aaa 就可以接受这种类型参数和返回值的函数
// 进行调用
// 1. 类似正常的函数调用方式
aaa(12, 13);
// 2. 通过委托调用
aaa.Invoke(12, 13);
```

- 匿名函数

```csharp
aaa a = (int a, int b) => {
return a + b;
}

// 如果函数体只有一行, 可以省略大括号和return语句
aaa a = (int a, int b) => a + b;
// 如果左侧的变量类型已定, 那么匿名函数中的变量类型可以省略
aaa a = (a, b) => a + b;
```

- Linq 居有的内容

Where: 对数组进行过滤
Select: 对数组进行映射
Any: 判断数组中是否存在满足条件的元素
All: 判断数组中是否全部满足条件

FirstOrDefault: 获取数组中第一个满足条件的元素, 如果没有满足条件的元素, 则返回对应类型的默认值或者第二个参数设置的值
First: 获取数组中第一个满足条件的元素, 如果没有满足条件的元素, 则抛出异常
Single: 获取数组中唯一一个满足条件的元素, 如果没有满足条件或者多个满足条件的元素, 抛出异常
SingleOrDefault: 获取数组中唯一一个满足条件的元素, 如果没有满足条件, 则返回对应类型的默认值或者第二个参数设置的值, 如果有多个满足条件的就抛出异常

Orderby: 对数组进行排序升序
OrderbyDescending: 对数组进行排序降序
ThenBy: 对数组进行排序升序, 如果第一个排序条件相同, 则按照第二个排序条件进行排序
ThenByDescending: 对数组进行排序降序, 如果第一个排序条件相同, 则按照第二个排序条件进行排序

GroupBy: 对数组进行分组, 返回的数据为一个元素都是一个 IGrouping 类型, 包含了键 Key 和改分组的数组

### 4. 异步

c# 中的异步编程, 是指在函数中调用一个耗时操作, 而不阻塞线程, 而在函数返回时, 继续执行后续操作

异步居有传染性, 一旦一个方法内调用了某一个异步方法, 那么异步调用就会不断传递

- 异步编程

```csharp
// 新线程中去执行某一个方法
await Task.Run(() => {})
```

异步中执行的函数并不会在新的线程中去执行, 除非你明确指定在新线程中执行

- 异步中等待采用 await Task.Delay(毫秒方法)

Thread.Sleep(毫秒): 该方式会阻塞线程, 在异步中不要去用

```csharp
// 等待1秒
await Task.Delay(1000);
```

## III. 反射

{% raw %}
Expand Down
19 changes: 19 additions & 0 deletions DATABASE/POSTGRESQL/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# PostgreSql

<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->

<!-- code_chunk_output -->

- [PostgreSql](#postgresql)
- [I. 基础知识](#i-基础知识)
- [II. 高级知识](#ii-高级知识)
- [III. 迁移](#iii-迁移)

<!-- /code_chunk_output -->


## I. 基础知识

## II. 高级知识

## III. 迁移
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
- [database](DATABASE)
[mysql](DATABASE/MYSQL/README.md)
[sqlite](DATABASE/SQLITE/README.md)
[postresql](DATABASE/POSTGRESQL/README.md)

系统级

Expand Down Expand Up @@ -61,6 +62,11 @@
[pyinstall](PYTHON/pyinstall.md)
[poetry](PYTHON/poetry.md)

游戏

- [godot](GAME/GODOT/README.md)
- [unreal](GAME/UNREAL/README.md)

测试

- [test](TEST/README.md)
Expand Down

0 comments on commit 3c3a783

Please sign in to comment.