gpt4 book ai didi

c# - 在 C# 的内部类中实现内部接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:06 25 4
gpt4 key购买 nike

为什么不允许在内部类中实现内部接口(interface)?这种限制是否有特定原因,或者仅仅是语言设计决定?

internal interface IDefinition
{
string GetValueAsString(string property);
}

internal sealed class DefinitionArray : IDefinition
{
internal string GetValueAsString(string property)
{
return m_definitionRows
.Select(o => o.GetValueAsString(property))
.FirstOrDefault();
}
}

最佳答案

C# 6.0 语言规范的§3.5.6 指出:

Interface members implicitly have public declared accessibility. No access modifiers are allowed on interface member declarations.

所以你“理论上”拥有的是

internal interface IDefinition
{
public string GetValueAsString(string property);
}

但这不是问题,因为(§3.5.2):

The accessibility domain of a nested member M declared in a type T within a program P is defined as follows (noting that M itself may possibly be a type):

  • If the declared accessibility of M is public, the accessibility domain of M is the accessibility domain of T.

因此,成员的可访问性与声明为 internal 时等效。

关于c# - 在 C# 的内部类中实现内部接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47542754/

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