分部类中同一源文件中的变量作用域

本文关键字:变量 作用域 源文件 | 更新日期: 2023-09-27 17:56:21

无论如何可以在分部类中重用方法/变量名称吗?

类似于 internal 的东西,它在程序集级别定义了一个变量范围,但这次是在源文件级别。因此,我们可以在另一个代码文件中使用相同的名称,并且该变量可供同一代码 (*.cs) 文件中的其他成员使用。

分部类中同一源文件中的变量作用域

无论如何都可以重用 部分方法/变量名称 类?

否,因为分部类只是意味着实际的类被拆分到多个文件中。 在编译时,它们被组合成一个类,并且所有相同的规则都适用。

我不知道你想做什么的细节,但我怀疑你可以有两个不同的类,其中一个从另一个继承。 将方法等标记为内部而不是私有,然后子类可以看到它们,就像它们在同一个类中一样。

如果你绝对需要在子类中使用相同的变量名,你可以使用 new 关键字:new string Foo = "this is a new string.";它将忽略基类中的旧 Foo 字符串并使用你刚刚重新声明的字符串。

从 C# 4.0 规范:

部分方法除外 (§10.2.7),一个成员的集合 在多个部分中声明的类型是 只是一组成员的联合 在每个部分中声明。的尸体 类型声明的所有部分 共享同一声明空间 (§3.3),以及每个成员的范围 (§3.7) 延伸至所有人的身体 零件。的辅助功能域 任何成员始终包括所有 封闭型的部分;一个私人 在一个部分中声明的成员是自由的 可从另一部分访问。这是一个 编译时错误以声明相同的 成员在多个部分 类型,除非该成员是类型 使用部分修饰符。

partial class A
{
    int x;                      // Error, cannot declare x more than once
    partial class Inner     // Ok, Inner is a partial type
    {
        int y;
    }
}
partial class A
{
    int x;                      // Error, cannot declare x more than once
    partial class Inner     // Ok, Inner is a partial type
    {
        int z;
    }
}

目前您没有这样的选择。

分部类是一种语法糖。编译后,所有部分都将成为同一类。

不,最不容易访问的修饰符是私有的,这将涵盖整个类。

你应该真正考虑为什么你甚至需要它。我不以没有创造力而闻名(希望如此),但我发现很难想象一个场景,这确实是一个要求。一个并不全是奇怪的,就是这样。