当前位置: 首页 > news >正文

C#核心学习(十五)面向对象--关联知识点(1)命名空间

目录

一、命名空间基本概念:代码的"虚拟文件夹"

二 、命名空间的普通使用

三 、不同命名空间中相互使用 需要引用命名空间或指明出处

四、命名空间可以包裹命名空间(嵌套命名空间使用)

五、 关于修饰类的访问修饰符


一、命名空间基本概念:代码的"虚拟文件夹"

定义与本质
        命名空间(Namespace)是C#中用于组织和管理代码逻辑的核心机制。它本质上是一个逻辑容器,可以将类、结构、接口等类型进行分组管理,类似于操作系统的文件夹系统。但不同于物理文件夹,命名空间是纯粹的逻辑划分,与文件存储位置无关。就可以把他想成是一个工具包,装载着不同类的工具。

主要作用:

  1. 命名冲突防护:允许在不同命名空间中使用相同类型名

  2. 逻辑分组:将相关功能模块组织在一起(如数据访问层、业务逻辑层)

  3. 访问控制基础:与访问修饰符配合实现代码可见性管理

  4. 代码复用:通过合理划分促进组件化开发

技术特性

  • 支持多级嵌套(最多推荐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  —— 分部类

相关文章:

  • VSCode优雅的使用debug
  • QML面试笔记--UI设计篇04交互控件
  • 虚幻基础:碰撞帧运算
  • 【13】数据结构之树结构篇章
  • AI自动化制作web和手机应用软件的利器:bolt.new
  • Python设计模式:策略模式
  • 主机协议端口安全
  • 网络问题之TCP/UDP协议
  • 【Windows自带的图片查看软件photo】
  • 回文日期2
  • Process Explorer 性能调优实战:精准定位资源泄漏与高负载进程
  • ZYNQ笔记(五):AXI GPIO 中断
  • C++指针(四)万字图文详解!
  • 【特权FPGA】之乘法器
  • P8623 [蓝桥杯 2015 省 B] 移动距离
  • go学习记录(第一天)
  • 一、TorchRec里边的输入输出类型
  • 为什么要将函数变量化?
  • django rest framework相关面试题
  • windows+cmake+vscode+NDK远程调试安卓端C++项目
  • wordpress网站加载慢/淘宝排名查询
  • 公司自己做网站多少费用/免费软文网站
  • 广东高端网站建设/重庆网站快速排名提升
  • 给别人做网站赚钱吗/2020最近的新闻大事10条
  • 网络营销岗位职责和任职要求/网络优化这个行业怎么样
  • 商会网站建设招标方案/口碑营销方案