下面我将通过示例展示 C# 中多文件组成程序以及每个文件包含命名空间的情况。
C# 中,类型的可访问性由 “命名空间” 决定,而非文件名或文件路径。
- 在 Python 中,模块导入直接与文件名绑定(如
import ArithmeticOperations对应ArithmeticOperations.py文件)。 - 但在 C# 中,编译器关注的是 代码中声明的命名空间和类型,而非这些代码保存在哪个文件中。
假设我们有一个简单的计算器程序,由 3 个文件组成:
1. Program.cs 文件 - 包含程序入口点
2. ArithmeticOperations.cs 文件 - 包含算术运算相关代码
3. Validation.cs 文件 - 包含数据验证相关代码
此项目结构为:
ConsoleApp1/
├── Program.cs
├── bb/ // 新文件夹
│ └── ArithmeticOperations.cs // 移动后的文件
└── Validation.cs
ArithmeticOperations.cs 文件中代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 算术运算命名空间
namespace bb.Arithmetic
{
public class Operations
{
public int Add(int a, int b)
{
return a + b;
}
public int Subtract(int a, int b)
{
return a - b;
}
}
// 同一个命名空间中可以有多个类
public class AdvancedOperations
{
public int Multiply(int a, int b)
{
return a * b;
}
}
}
Validation.cs 文件中代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 验证命名空间
namespace Validation
{
public class NumberChecker
{
public static bool IsValidNumber(string input)
{
return int.TryParse(input, out _);
}
}
}
// 一个文件中可以有多个命名空间
namespace CalculatorApp.Helpers
{
public class DisplayHelper
{
public static void ShowMessage(string message)
{
Console.WriteLine($"[{DateTime.Now}] {message}");
}
}
}
Program.cs 文件中代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using bb.Arithmetic;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("简易计算器");
// 使用Arithmetic命名空间中的类
Operations op = new Operations();
Console.WriteLine($"3 + 5 = {op.Add(3, 5)}");
// 使用Validation命名空间中的类
Console.WriteLine($"是否为有效数字: {Validation.NumberChecker.IsValidNumber("123")}");
//等待输入
Console.ReadLine();
}
}
}

被折叠的 条评论
为什么被折叠?



