gpt4 book ai didi

c# - .NET 中的 protected 类

转载 作者:IT王子 更新时间:2023-10-29 04:04:16 24 4
gpt4 key购买 nike

在.NET中可以保护一个类吗?
为什么这可能/不可能?

最佳答案

是的,你不能让它们成为顶级类,它们必须是内部类

public class Outer
{
protected class Foo
{
}
}

这很好,这意味着唯一允许看到 Foo 的类是 Outer 的子类

class X 
{
// 'Outer.Foo' is inaccessible due to its protection level
private void Flibble(Outer.Foo foo)
{
}
}

class X : Outer
{
// fine
private void Flibble(Outer.Foo foo)
{
}
}

请注意,您不能在 C# 中将任何外部类声明为私有(private)、 protected (或 protected 内部),因为外部类的访问修饰符定义了它们相对于其他程序集的可见性。仅在程序集内(或通过 InternalsVisibleTo 对 friend 可见)或在程序集外特别可见。

因此,虽然此处使用公共(public)/内部标识符是为了保持一致性,但实际上 IL 中的状态只是“公共(public)”或“非公共(public)”(如 Reflection.Emit flags show )

关于c# - .NET 中的 protected 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017778/

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