C# 为什么VSIDE在创建私有类时出错
若我们在任何名称空间下创建私有类,那个么我们会得到编译错误,但若我们在另一个类中创建一个嵌套类的私有类,那个么它可以编译。另一个人解释了为什么在任何名称空间下声明private都会出错?他说, 允许类对名称空间是私有的不会产生任何效果 有意义的保护级别。世界上的任何大会都可以 引用dll,并开始在名称空间中编写代码 访问你所谓的私有类。我想这可能是 你会从微软得到答案 我真的不明白这句话“开始在名称空间中编写代码,它可以访问假定的私有类”C# 为什么VSIDE在创建私有类时出错,c#,oop,C#,Oop,若我们在任何名称空间下创建私有类,那个么我们会得到编译错误,但若我们在另一个类中创建一个嵌套类的私有类,那个么它可以编译。另一个人解释了为什么在任何名称空间下声明private都会出错?他说, 允许类对名称空间是私有的不会产生任何效果 有意义的保护级别。世界上的任何大会都可以 引用dll,并开始在名称空间中编写代码 访问你所谓的私有类。我想这可能是 你会从微软得到答案 我真的不明白这句话“开始在名称空间中编写代码,它可以访问假定的私有类” 任何人怎么能进入我的私人课堂?任何人都可以告诉我这句话:
任何人怎么能进入我的私人课堂?任何人都可以告诉我这句话:“开始在名称空间中编写代码,以访问假定的私有类”假设您有一个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();
}
}
在这种情况下,private修饰符有什么用途?想象以下场景: 使用命名空间
Mou.MyStuff
编写程序集A.dll
。在该名称空间中,有一个私有类SomeClass
。基于类的私有性
可见性,该类对谁可见?仅适用于同一命名空间中的其他类型
然后,其他人可以编写自己的程序集B.dll
。在该程序集中,他们可以在名称空间Mou.MyStuff
中定义一个类SomeOtherClass
。没有任何东西可以阻止他们使用与您使用的非常相同的命名空间,因此访问“private”类型绝对没有障碍
如果您要查找的只是程序集中的可见性,请使用可见性。
世界上的任何程序集都可以引用您的dll,并开始在命名空间中编写代码,以访问假定的私有类,啊..我认为恰恰相反。我想你需要的可能是内部
类,而不是真正的私有
类如何创建我的私有类的实例,比如private hiclass=new MyClass()??你能详细解释一下吗。谢天谢地是不可能的!这个例子只是为了解释为什么不可能。首先,c#不允许我们声明私有类。我们只能将私有类声明为另一个类中的嵌套类。所以现在,同一名称空间中的另一个人不能使用我的私有类……我说得对吗?是的,嵌套的私有类只能在父类中使用。您得到了正确的答案,但值得强调的是,这是“假设代码”,不会在另一个类中出现错误。考虑改变上次的评论。首先,C不允许我们声明一个私有类。我们只能将私有类声明为另一个类中的嵌套类。所以现在,同一名称空间中的另一个人不能使用我的私有类……我说得对吗?@Mou人们试图解释规则,说“想象这不是规则,这是会发生的。这很糟糕,所以这就是为什么它是规则”而你一直回答“但这永远不会发生,因为这是规则!”这并不能帮助你理解他们的观点