gpt4 book ai didi

c# - 命名空间级别的枚举 - 仍然需要公开吗?

转载 作者:行者123 更新时间:2023-11-30 14:40:21 24 4
gpt4 key购买 nike

我不确定为什么枚举必须公开才能与委托(delegate)一起使用。我假设在命名空间级别上,整个应用程序都可以访问它,因为它在范围内。

namespace Test
{

enum Days
{
Monday,Tuesday
}

class TestingClass
{
public delegate void DelTest(Days d) /// ERROR, type enum is less accessible
}
}

最佳答案

您的委托(delegate)类型实际上是在 internal 类中声明的,因此它也是有效内部的(无论如何,在某种意义上)。这就是为什么您的示例如图所示 将编译(在添加分号之后)。要让它崩溃,您还必须公开 TestingClass。所以选项:

  • 保持如图所示
  • 如果您希望 TestingClass 公开,则将委托(delegate)显式设置为内部
  • 如果您希望所有内容都公开,请明确公开枚举

只是为了解释如果 TestClass 是公共(public)的,为什么您当前的代码被破坏:委托(delegate)将是公共(public)的,因此在当前程序集之外可见。这意味着它的所有参数和返回类型也必须可见。

不要忘记 C# 中成员的默认访问级别始终是“可以为该成员显式指定的最严格的访问级别”——因此对于顶级类型(包括枚举),默认可访问性是内部的

关于c# - 命名空间级别的枚举 - 仍然需要公开吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com