浩明-空间 浩明-空间
首页
  • 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#类比学习
    • ts-c#的泛型
    • c#命名空间与es6模块
      • ES6 模块示例
      • C# 命名空间示例
      • 总结
      • 相似之处
        • 代码组织
        • 命名空间/模块标识
        • 避免命名冲突
      • 不同之处
        • 作用域
        • 访问控制
        • 依赖管理
        • 加载方式
        • 工具支持
    • lambda表达式
    • c#和ts的异步编程
    • C#与ts的数组操作方法
    • c#与ts事件
    • c#和ts的继承
    • c#与ts接口
    • c#与ts类对象
  • 学习笔记

  • typescript杂谈

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

c#命名空间与es6模块

# ES6 模块示例

假设我们有一个名为 math.ts 的模块文件,它导出了一些数学工具函数:

// math.ts
export const PI:number = 3.14159;

export function square(x:number): number{
  return x * x;
}

export function cube(x:number): number {
  return x * x * x;
}
1
2
3
4
5
6
7
8
9
10

在另一个文件中,我们可以导入并使用这些函数:

// app.js
import { PI, square, cube } from './math.ts';

console.log(PI); // 3.14159
console.log(square(3)); // 9
console.log(cube(3)); // 27

1
2
3
4
5
6
7

在这个示例中,我们通过 using 指令引用了 MyCompany.Math 命名空间,然后可以直接使用其中的 Calculator 类和其成员。命名空间提供了一种有层次结构的代码组织方式,并且可以避免不同命名空间中的类型发生命名冲突。

|| 在这个示例中,我们从 math.ts 模块中导入了 PI、square 和 cube。通过 ES6 模块语法,我们可以选择性地导入所需的部分,并避免了全局命名空间的污染。

# C# 命名空间示例

假设我们有一个名为 MyCompany.Math 的命名空间,它包含了一些数学工具类:

// MyCompany.Math 命名空间
namespace MyCompany.Math
{
    public class Calculator
    {
        public const double PI = 3.14159;

        public static int Square(int x)
        {
            return x * x;
        }

        public static int Cube(int x)
        {
            return x * x * x;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

在另一个文件中,我们可以使用 using 指令来引用该命名空间:

using MyCompany.Math;

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Calculator.PI); // 3.14159
            Console.WriteLine(Calculator.Square(3)); // 9
            Console.WriteLine(Calculator.Cube(3)); // 27
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 总结

C# 中的命名空间和 ES6 模块标准都旨在组织和封装代码,但在用法和功能上存在一些重要区别:

# 相似之处

# 代码组织

它们都用于将相关的类型、函数和变量组织在一起,提高代码的可读性和可维护性。

# 命名空间/模块标识

它们都为组织单元提供了唯一的标识符,用于引用和导入特定的命名空间或模块。

# 避免命名冲突

通过将代码划分到不同的命名空间或模块中,可以有效避免全局命名空间的污染和命名冲突。

# 不同之处

# 作用域

C# 命名空间的作用域仅限于程序集内部,而 ES6 模块的作用域是文件级别的。

# 访问控制

C# 命名空间中的类型可以使用访问修饰符(如 public、private 等)控制可访问性,而 ES6 模块中的导入/导出是显式的。

# 依赖管理

ES6 模块依赖关系由导入语句显式声明,而 C# 命名空间依赖通常由程序集引用管理。

# 加载方式

ES6 模块通常通过网络加载,支持按需加载,而 C# 程序集通常作为应用程序的一部分进行加载。

# 工具支持

大多数现代 TypeScript 工具和构建工具都原生支持 ES6 模块,而 C# 命名空间主要由 Visual Studio 和 .NET 生态系统支持。

编辑 (opens new window)
#C#
上次更新: 2024/08/09, 10:55:31
ts-c#的泛型
lambda表达式

← ts-c#的泛型 lambda表达式→

最近更新
01
c#与ts类对象
08-06
02
c#与ts接口
08-06
03
c#和ts的继承
08-06
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Haoming chu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式