为什么我不能在同一文件中的另一个类中声明文件本地类型的私有成员?

问题描述 投票:0回答:1

此代码:

public class Class1
{
    private Class2 _class2;

    private void Something()
    {
        Class2 class2;
    }
}

file class Class2
{

}

在成员

_class2
上产生编译器错误 CS9051,但不会在方法内的局部变量
class2
上产生编译器错误:

文件本地类型“Class2”不能在成员签名中使用 非文件本地类型“Class1”。

单击 CS9051 提供的链接将打开此页面,在撰写本文时,该页面状态为 抱歉,我们没有有关此 C# 错误的详细信息。我在网上找不到任何其他内容可以解释为什么会出现这种情况。有人可以解释一下为什么我可以

Class2
内的方法或属性中使用
Class1
不能作为私有类成员吗?这似乎降低了原本有用的功能(
file
访问修饰符)的实用性。

c# .net access-modifiers
1个回答
0
投票

允许在顶级类型声明上使用文件修饰符。该类型仅存在于声明它的文件中。

https://learn.microsoft.com/En-Us/dotnet/csharp/language-reference/proposals/csharp-11.0/file-local-types

© www.soinside.com 2019 - 2024. All rights reserved.