为什么VS IDE在创建私有类时会出现错误
本文关键字:错误 IDE VS 创建 为什么 | 更新日期: 2023-09-27 18:04:56
如果我们在任何命名空间下创建私有类,那么我们得到编译错误,但如果我们在另一个类中创建私有类作为嵌套类,那么它编译良好。另一个人解释了为什么在任何命名空间下声明私有时会出现错误?他说:
允许类对命名空间是私有的将实现no有意义的保护水平。世界上任何一个集会都可以引用您的dll,并开始在您的命名空间中编写代码访问所谓的私有类。我想这可能是你能从微软得到的答案。
我真的不明白这句话"start writing code in your namespace which accesses your supposedly private classes"
任何人如何访问我的私有类?谁能告诉我"start writing code in your namespace which accesses your supposedly private classes"
假设你有一个DLL,你写:
// hypotetical code !
namespace My.Namespace
{
private class MyClass
{
}
}
你想要声明这个类只能在命名空间My.Namespace
中使用。你想让这个类在这个命名空间内部,并保护它在外部的使用。
现在任何人都可以创建一个不同的DLL引用上面的DLL并声明相同的命名空间My.Namespace
,实际上无论如何都可以使用MyClass
。因为它在同一个命名空间:
// hypotetical code !
namespace My.Namespace
{
public class AnotherClass
{
private hisClass = new MyClass();
}
}
在这种情况下,私有修饰符有什么用?
想象以下场景:
你写了一个程序集A.dll
和一个命名空间Mou.MyStuff
。在这个命名空间中,有一个私有类SomeClass
。基于private
的可见性,该类应该对谁可见?只对同一名称空间中的其他类型?
然后,其他人可以编写自己的程序集B.dll
。在该程序集中,他们可以在命名空间Mou.MyStuff
中定义类SomeOtherClass
。没有什么可以阻止他们使用与您相同的命名空间,因此访问您的"私有"类型绝对没有障碍。
如果您正在寻找的是仅在您的程序集中可见性,请使用internal
可见性。