浩明-空间 浩明-空间
首页
  • Unity

    • 类比法学c#
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
  • typescript杂谈

    • 为什么要用ts
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • vim学习
  • webgl基础
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 悟道
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

储浩明

热爱编程的小明
首页
  • Unity

    • 类比法学c#
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
  • typescript杂谈

    • 为什么要用ts
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • vim学习
  • webgl基础
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 悟道
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JavaScript文章

  • Unity

    • C#类比学习
      • 定时器
      • 协程机制
        • IEnumerator yield
      • 传统协程IEnumerator yield方式
      • async/await方式
      • js中的协程方式
      • 传统协程IEnumerator yield方式
      • async/await方式
    • ts-c#的泛型
    • c#命名空间与es6模块
    • lambda表达式
    • c#和ts的异步编程
    • C#与ts的数组操作方法
    • c#与ts事件
    • c#和ts的继承
    • c#与ts接口
    • c#与ts类对象
    • 向量运算
    • 太阳系系统
    • C#中的事件与委托对比
    • c#中的值类型和引用类型
  • 学习笔记

  • typescript杂谈

  • 前端
  • Unity
chuhaoming
2024-08-02
目录

C#类比学习

# C#类比学习

要想学习各种语言而不忘记,那必须要抓住不同语言的底层设计思想 通过思想去连接不同的技术从而在自己的大脑里构建出一个技术树来,那最简单的方法就是类比,大道至简,用最熟悉的领域来类比和总结出树的根部,然后长出枝叶,开花结果!

# 类和对象

就像在TypeScript中一样,C#也是一种基于类的面向对象语言。类定义了对象的属性和方法,而对象是类的实例。

# 接口

C#中的接口类似于TypeScript中的接口,它定义了一个对象应该实现的方法和属性。这有助于实现多态性和代码重用。

# 继承

C#中的继承与TypeScript中的继承概念类似,子类可以从父类继承属性和方法。

# 异步编程

在Web开发中,您可能使用了异步/await模式,这在C#中也存在。C#有异步和await关键字,可以更轻松地处理异步操作

# Lambda表达式

C#和TypeScript都支持Lambda表达式,这使代码更加简洁和可读。

# LINQ

C#中的LINQ(Language Integrated Query)类似于JavaScript中的数组方法,如map、filter和reduce。它使您可以使用查询语法来处理集合。

# 事件

C#中的事件类似于TypeScript中的事件,它们允许对象通过发布-订阅模式进行通信。

# 命名空间

命名空间在C#中的作用类似于TypeScript中的模块,用于组织代码和避免命名冲突。

# 集成开发环境(IDE)

就像在Web开发中使用Visual Studio Code一样,在C#中您可以使用Visual Studio,这是一个功能强大的IDE,可以提高您的工作效率。

Dictionary Map List Array

自动更新数据 update方法对应js中的RequestAnimationFrame 本地存储数据: PlayerPrefs 方法对应js中 LocalStorage cookies

Json数据的处理: JsonUtility ----- js中的 JSON

构造函数: Class类的名字的方法 ----- js中的 constructor

C#:


 Debug.LogWarning($"{activePanel.name}里找不到名为{name}的子对象");
1
2

js:

  console.warn(`${activePanel.name}里找不到名为${name}的子对象`);

1
2

# 定时器

js: setTimeout setInterval c#的unity里自带 Invoke InvokeRepeating

# 协程机制

# IEnumerator yield

在引入async/await之前,Unity中实现异步操作需要使用传统的协程方式,即通过IEnumerator和yield关键字来控制执行流程。这种方式虽然功能强大,但代码可读性相对较差,并且需要手动管理状态。从2017.1版本开始,Unity支持了C# 7.0中引入的async/await语法,这极大地简化了异步编程。使用async/await可以像编写同步代码一样编写异步代码,而不需要手动管理状态机。

# 传统协程IEnumerator yield方式

using UnityEngine;
using System.Collections;

public class TraditionalCoroutine : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(WaitAndPrint());
    }

    private IEnumerator WaitAndPrint()
    {
        yield return new WaitForSeconds(2f);
        Debug.Log("Waited for 2 seconds.");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# async/await方式

using UnityEngine;
using System.Threading.Tasks;

public class AwaitCoroutine : MonoBehaviour
{
    async void Start()
    {
        try
    {
                await WaitAndPrint();

    }
    catch (Exception ex)
    {
        Debug.LogError($"Error: {ex.Message}");
    }
    }

    async Task WaitAndPrint()
    {
        await Task.Delay(2000);
        Debug.Log("Waited for 2 seconds.");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# js中的协程方式

在JavaScript中,生成器函数(generator function)是一种特殊的函数,可以使用yield关键字来暂停和恢复函数的执行,从而实现异步编程。生成器函数返回一个生成器对象,可以使用next()方法来恢复执行,并获取yield的值。

# 传统协程IEnumerator yield方式

function* myGenerator() {
    yield 'Hello'; // 暂停执行
    yield 'World'; // 暂停执行
    return 'Done'; // 返回最终值
}

const gen = myGenerator();
console.log(gen.next().value); // 输出 'Hello'
console.log(gen.next().value); // 输出 'World'
console.log(gen.next().value); // 输出 'Done'

1
2
3
4
5
6
7
8
9
10
11

# async/await方式

async function myGenerator() {
    return 'Done'; // 返回最终值
}

const gen =await myGenerator();

1
2
3
4
5
6

ctrl shift F 游戏相机将重置到场景视角相机的位置

编辑 (opens new window)
#C#
上次更新: 2024/08/23, 14:13:02
四级文件(测试)
ts-c#的泛型

← 四级文件(测试) ts-c#的泛型→

最近更新
01
ARG
12-03
02
插件开发的核心原则
12-03
03
Python基础知识与js,c#,ts类比
03-19
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Haoming chu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式