靠谱网站建设公司代引流推广公司
目录
一、命名空间基本概念:代码的"虚拟文件夹"
二 、命名空间的普通使用
三 、不同命名空间中相互使用 需要引用命名空间或指明出处
四、命名空间可以包裹命名空间(嵌套命名空间使用)
五、 关于修饰类的访问修饰符
一、命名空间基本概念:代码的"虚拟文件夹"
定义与本质
命名空间(Namespace)是C#中用于组织和管理代码逻辑的核心机制。它本质上是一个逻辑容器,可以将类、结构、接口等类型进行分组管理,类似于操作系统的文件夹系统。但不同于物理文件夹,命名空间是纯粹的逻辑划分,与文件存储位置无关。就可以把他想成是一个工具包,装载着不同类的工具。
主要作用:
-
命名冲突防护:允许在不同命名空间中使用相同类型名
-
逻辑分组:将相关功能模块组织在一起(如数据访问层、业务逻辑层)
-
访问控制基础:与访问修饰符配合实现代码可见性管理
-
代码复用:通过合理划分促进组件化开发
技术特性
-
支持多级嵌套(最多推荐3级)
-
同一个命名空间可分布在多个文件中
-
默认命名空间为全局命名空间(无命名空间声明时)
二 、命名空间的普通使用
先申明一个命名空间:
// 声明命名空间
namespace School.Math
{public class Calculator {public int Add(int a, int b) => a + b;}
}
使用示例:其实在前面我们写的所有的代码都在命名空间中,大家早就不陌生了
// 使用命名空间
using School.Math;class Program
{static void Main(){// 明确知道Calculator来自School.Math命名空间var calc = new Calculator();Console.WriteLine(calc.Add(2, 3)); // 输出5}
}
三 、不同命名空间中相互使用 需要引用命名空间或指明出处
有可能在不同的命名空间,你有相同的类名,你想使用指定的命名空间中的内容,你就必须指定是哪个命名空间里面的。直接 命名空间.类名 对象名 new出来就可以使用了。
命名空间声明:
// 文件:Physics/Mechanics.cs
namespace Physics.Mechanics
{public class ForceCalculator {public double CalculateForce(double mass, double acceleration) => mass * acceleration;}
}// 文件:Math/Algebra.cs
namespace Math.Algebra
{public class EquationSolver{public double SolveLinearEquation(double a, double b) => -b / a;}
}
使用:
// 主程序文件
class Program
{static void Main(){// 显式类型声明 + 完全限定名Physics.Mechanics.ForceCalculator forceCalculator = new Physics.Mechanics.ForceCalculator();Math.Algebra.EquationSolver equationSolver = new Math.Algebra.EquationSolver();double force = forceCalculator.CalculateForce(10, 9.8);double solution = equationSolver.SolveLinearEquation(2, -4);System.Console.WriteLine($"力:{force}N,方程解:{solution}");}
}
不同命名空间中允许有同名类,在不同的命名空间中 是可以有同名类的
四、命名空间可以包裹命名空间(嵌套命名空间使用)
命名空间的声明:
// 外层命名空间
namespace ECommerce
{// 内层命名空间namespace Payment{public class Processor{public void ProcessPayment(double amount) => Console.WriteLine($"处理支付:{amount}元");}}
}// 等效简化写法
namespace ECommerce.Shipping
{public class DeliveryService{public void ScheduleDelivery() => Console.WriteLine("安排配送");}
}
使用示例:
// 使用示例
using ECommerce.Payment;
using ECommerce.Shipping;class OrderSystem
{void ProcessOrder(){new Processor().ProcessPayment(199.9);new DeliveryService().ScheduleDelivery();}
}
五、 关于修饰类的访问修饰符
public —— 命名空间中的类 默认为public
internal —— 只能在该程序集中使用
abstract —— 抽象类
sealed —— 密封类
partial —— 分部类