首页 > 编程语言 >C#、TS和Dart对比1:概述

C#、TS和Dart对比1:概述

时间:2023-01-11 16:58:59浏览次数:63  
标签:语言 C# TS JS 运算符 Dart

一、为什么要三门语言一起学?

  • 多门语言一起学习,有利于提升语言学习的触类旁通能力。现代开发语言非常丰富,很多应用场景或问题的解决,需要多种语言配合,有了触类旁通的学习能力,当需要接触一门新语言时,上手会比较快。另外,由于不同语言的相似性,多种语言开发时,会经常短路错位,这里也算是一个快速查询的目录。

 

二、为什么选了C#、TS和Dart?

  • 完全基于实用主义。作为个人开发者和小微团队,基本上都需要全栈开发。而基于C#的.NET是后端的最优选之一,而前端框架使用过Blazor、WPF/MAUI、Vue、Flutter和小程序,所以选了C#、TS和Dart。

 

三、简单说一下C#、TS和Dart这三门语言?

  • C#是完全面向对象的强类型语言,对标的语言是Java,无论语法还是底层原理,都非常相似。性能以及语法特性上,C#是能够胜过Java的,但在使用的广泛度上,C#明显要弱于Java,尤其是在国内。两者都主要用于后端开发,但也都有涉及前端。而C#的前端框架非常丰富,包括MVC、Blazor、winform、WPF、MAUI等。 TS是JS的超级。
  • TS在JS原型对象的基础上,扩展了静态类型、类、接口、泛型等功能,使JS在开发环节具备了完全面向对象语言的特性,非常有利于构建大型应用。但在运行时,仍然是通过编译器将TS转译为JS执行,本质上还是JS。现代前端UI框架,如Vue、React等,都已全面转向TS(javascript的后端框架nodejs,也已支持TS)。
  • Dart结合了面向对象语言(如C#/Java)和JS的特性,如静态类型、类、泛型等,接近于C#/Java;而变量和函数又都是顶级成员(可以在类以外定义和使用),接近于JS。同时,Dart支持JIT和AOT两种编译模式,在开发阶段使用JIT,能有效提升开发效率(如Flutter的杀手锏-热重载),而在部署阶段,通过AOT编译为目标平台的机器码,包括了dart2native(原生平台)和dart2js(javascript)两种方式,兼顾了开发效率和运行性能。Dart目前主要用于Flutter跨平台前端UI框架,早期Dart作为JS的替代者出现,但现在可以说,它就是为Flutter而生的一门语言。

 

四、会有深入原理性的内容吗?

  • 比较少。一是怕讲不好;二是我认为掌握了使用,原理层面的东西大概就知道七七八八了,而剩下的20%,通过看不同的文章和案例,以及日后实际开发过程中,接触到不同的开发框架时,会一下顿悟。

 

五、目录:

1 概述

2 学习环境搭建

3 变量和作用域

4 类型

4.1 类型概述

4.2 基本类型:数值

4.3 基本类型:布尔

4.4 基本类型:字符/字符串

4.5 集合类型

4.6 枚举

4.7 结构体

5 函数/方法

5.1 函数的声明和调用

5.2 函数的返回值

5.3 函数的参数

5.4 函数表达式、委托和typedef

5.5 闭包和委托捕获

5.6 扩展方法

6 表达式、运算符和语句

6.1 表达式和字面量

6.2 运算符

6.3 特殊运算符

6.4 运算符重载

6.5 判断和循环语句

7 类基础

7.1 类的声明和使用

7.2 静态类和实例类

7.3 类的成员

7.4 构造函数

7.5 访问修饰符

7.6 嵌套类

8 类高级

9 接口

10 泛型

11 异常

12 异步

13 事件

14 常用库

14.1 字符串

14.2 日期

14.3 Math

14.4 RegExp

14.5 JSON

14.6 迭代集合

14.7 文件操作

14.8 Web请求

15 其它

15.1 反射特性-C#

15.2 装饰器-TS

15.3 元数据-Dart

15.4 联合类型-TS

15.5 原型链-TS

15.6 并发isolate-Dart

15.7 索引器-C#

15.8 类型转换

15.9 多维数组

15.10 位移运算符

15.11 协变和逆变

15.12 ......

标签:语言,C#,TS,JS,运算符,Dart
From: https://www.cnblogs.com/functionMC/p/17043869.html

相关文章

  • 使用Stream流实现以List<Map<String, Object>>集合中Map的key值进行排序
    使用Stream流实现以List<Map<String,Object>>集合中Map的key值进行排序创建一个list存入数据List<Map<String,Object>>list=newArrayList<>();fo......
  • Springcloud学习笔记54--postman传递date格式数据
    1.postman传递date格式数据通过定义PostMan全局变量传递postman.setGlobalVariable("inputtime",Date.parse(newDate("2021/12/16")));   ......
  • CVE-2020-2551
    前言2020年1月15日,Oracle发布了一系列的安全补丁,其中OracleWebLogicServer产品有高危漏洞,漏洞编号CVE-2020-2551,CVSS评分9.8分,漏洞利用难度低,可基于IIOP协议执行......
  • Echarts —自定义label标签的样式(formatter,rich,添加图标等操作)
    最近公司项目中在使用Echarts绘制图表时,由于默认的label标签不能满足设计稿需求,所以研究了对label标签进行格式化的方案,了解到可以使用formatter内容格式器对标签内......
  • 代码随想录 Day15 LeetCode102. 二叉树的层序遍历
    102.二叉树的层序遍历classSolution{public:vector<vector<int>>levelOrder(TreeNode*root){vector<vector<int>>result;queue<TreeNode*......
  • docker容器迁移
    一、容器镜像迁移将Docker容器迁移到另外一台服务器上,最常用的方法是迁移容器关联到的镜像。对于必须迁移的容器,首先使用dockercommit命令将其保存为Docker镜像。docke......
  • buuctf-ssrf+php伪协议嵌套
    [BSidesCF2020]Hadabadday【ssrf+伪协议的嵌套】进入或可以点击WOOFERS和MEOWERS获取狗和猫的图片,同时发现地址栏出现category分别等于WOOFERS和MEOWERS两种值之后......
  • 【Surface Detection】Segmentation-Based Deep-Learning Approach for Surface-Defec
    物体表面缺陷检测现状传统机器学习局限性传统机器学习方法对于特定的算法只能解决特定的问题,不够灵活,无法快速适应新产品;不同的问题有不同的特征,当需要解决新问题时,需......
  • RocketMQ基础详解
    RocketMQRocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。主要功能是异步解耦和流量削峰。常见的......
  • 图像识别四大图像库比较:OpenCV/FreeImage/CImg/CxImage
    OpenCV功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法,然后将图像格式和矩阵......