gpt4 book ai didi

c# - IsAssembly/IsFamily 和 IsFamilyOrAssembly 之间的关系

转载 作者:行者123 更新时间:2023-11-30 21:43:41 26 4
gpt4 key购买 nike

IsAssembly、IsPublic、IsFamily、IsFamilyOrAssembly、IsFamilyAndAssembly 我已经阅读了相关内容,但我无法理解每个人的作用。这里奇怪的是 IsFamilyIsAssembly 在代码中返回 False 但是 < strong>IsFamilyOrAssembly 返回 True

有人可以对每个属性给出解释吗,因为我发现很难从文档中理解它。当我开始阅读有关 C# 中的反射时,我遇到了所有这些。

public class Example
{
public void m_public() {}
internal void m_internal() {}
protected void m_protected() {}
protected internal void m_protected_public() {}

public static void Main()
{
Console.WriteLine("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly");
Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}\n",
"", "IsPublic", "IsFamily", "IsFamilyAndAssembly");

foreach (MethodBase m in typeof(Example).GetMethods(
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
{
if (m.Name.Substring(0, 1) == "m")
{
Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}",
m.Name,
m.IsPublic,
m.IsAssembly,
m.IsFamily,
m.IsFamilyOrAssembly,
m.IsFamilyAndAssembly
);
}
}
}
}

此代码示例产生类似于以下内容的输出:

                              IsAssembly        IsFamilyOrAssembly
IsPublic IsFamily IsFamilyAndAssembly

m_public True False False False False
m_internal False True False False False
m_protected False False True False False
m_protected_public False False False True False

最佳答案

类的成员具有与其关联的访问修饰符(公共(public)、内部...)。这些定义了成员实现的面向对象的封装级别。您可以在 here 找到更多详细信息。 .

使用反射,你可能想看看:

                    /*Modifiers*/

IsPublic public

IsFamilyOrAssembly protected internal

IsFamily protected

IsFamilyAndAssembly private protected (since C# 7.2)

IsAssembly internal

当你想确定一个成员在继承类型中是否可见时,你需要使用表达式 (m.IsFamilyOrAssembly || m.IsFamily || < strong>m.IsFamilyAndAssembly || m.IsAssembly).这些属性中只有一个是true,所有其他属性都是false

关于c# - IsAssembly/IsFamily 和 IsFamilyOrAssembly 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41499598/

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