命名空间
理解命名空间的作用与命名规范
掌握命名空间的定义与导入
学会分层组织代码结构
核心讲解
(1)为什么需要命名空间
分类管理:按模块、按功能组织代码,项目大了清晰好维护
避免重名:不同命名空间下类名可以相同,不会冲突
控制访问:配合访问修饰符,分层暴露接口
(2)命名规范
格式:
公司名.项目名.模块名全部用帕斯卡命名,点分隔
示例:
MyCompany.ECommerce.Order、MyCompany.ECommerce.User
(3)定义命名空间
用 namespace 关键字包裹类。
namespace MyApp.Utils
{
public class StringHelper
{
}
}
(4)导入命名空间
using 命名空间;导入,然后直接用类名不导入的话,要用全限定名:
命名空间.类名常用系统命名空间:
System:基础类型、控制台System.Collections.Generic:泛型集合System.IO:文件 IOSystem.Linq:LINQ 查询
(5)项目分层结构
Models:实体模型类Utils:工具类Services:业务逻辑UI:界面
操作步骤
新建两个文件夹:
Models、Utils分别在里面创建类,定义不同的命名空间
主程序用 using 导入并调用
运行验证
代码示例
// 文件夹 Models / Student.cs
namespace MyApp.Models
{
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
}
// 文件夹 Utils / MathHelper.cs
namespace MyApp.Utils
{
public static class MathHelper
{
public static int Add(int a, int b) => a + b;
public static int Multiply(int a, int b) => a * b;
}
}
// Program.cs
// 导入命名空间
using MyApp.Models;
using MyApp.Utils;
// 直接使用类名
Student stu = new Student { Name = "张三", Age = 20 };
Console.WriteLine($"学生:{stu.Name},{stu.Age}岁");
int result = MathHelper.Add(10, 20);
Console.WriteLine("计算结果:" + result);
// 不导入,用全限定名
MyApp.Models.Student stu2 = new MyApp.Models.Student();
Console.ReadKey();
常见误区
命名空间和类名混淆:命名空间是组织,类是实体,不要重名
using 写在 namespace 里面:可以,但一般写在文件最上面
同名类冲突:两个命名空间有同名类,要用全限定名或者别名
命名空间分层混乱:按模块、按功能分层,不要平级放所有类
课后练习
创建三个命名空间:
Models、Utils、Services每个命名空间下写一个对应的类
主程序导入并调用所有类
思考:项目大了为什么必须用命名空间分层?

