gpt4 book ai didi

c# - 内部类中的公共(public)和内部成员?

转载 作者:IT王子 更新时间:2023-10-29 03:45:43 25 4
gpt4 key购买 nike

好吧,这可能是个有点傻的问题,而且肯定有明显的答案,但我很好奇我是否遗漏了这里的任何细微之处。

internal 类中声明的 public 成员和在类中声明的 internal 成员在可见性/可用性方面是否存在差异内部类?

即之间

internal class Foo
{
public void Bar()
{
}
}

internal class Foo
{
internal void Bar()
{
}
}

如果您将方法声明为 publicvirtual,然后在 public 的派生类中覆盖它,原因使用此修饰符很清楚。但是,这是唯一的情况吗……我是否遗漏了其他情况?

最佳答案

考虑这种情况:

public interface IBar { void Bar(); }
internal class C : IBar
{
public void Bar() { }
}

这里C.Bar不能标记为内部;这样做是错误的,因为 D.GetBar() 的调用者可以访问 C.Bar:

public class D
{
public static IBar GetBar() { return new C(); }
}

一位评论者问了一个后续问题:接口(interface)方法的显式实现被认为是公共(public),还是私有(private)? (C# 不允许您在显式实现上放置访问修饰符。)

退后一步,想一想成员的“公共(public)”或“私有(private)”到底是什么:人们认为错误的事情是“私有(private)意味着不能从类外部调用方法” ,但事实并非如此;该类可以对私有(private)方法进行委托(delegate),将其传递给任何人,然后他们可以调用私有(private)方法。

相反,可访问性决定了可以在何处使用事物的名称!显式接口(interface)实现首先不会在类声明空间中添加名称;它们只能通过接口(interface)按名称引用,而不能通过类引用。将显式接口(interface)实现视为公共(public)私有(private)确实没有意义,因为它们没有您可以引用的名称。

关于c# - 内部类中的公共(public)和内部成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564215/

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