Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内部类访问修饰符不起作用?_C#_Class_Internal - Fatal编程技术网

C# 内部类访问修饰符不起作用?

C# 内部类访问修饰符不起作用?,c#,class,internal,C#,Class,Internal,我真的不明白为什么,但似乎内部访问修饰符不起作用:S 我已经阅读了本教程: 但对我来说,它是编译的。 此外,我还买了一本插图C#2012的书。并对内部类等进行了说明。。。但它仍然没有任何作用 下面是我的完整代码,它甚至可以与内部访问一起工作 //Program.cs namespace ConsoleApplication1 { class Program { static void Main(string[] args) {

我真的不明白为什么,但似乎内部访问修饰符不起作用:S

我已经阅读了本教程:

但对我来说,它是编译的。 此外,我还买了一本插图C#2012的书。并对内部类等进行了说明。。。但它仍然没有任何作用

下面是我的完整代码,它甚至可以与内部访问一起工作

//Program.cs
namespace ConsoleApplication1
{
    class Program
    {
       static void Main(string[] args)
       {
           Class1 myclass = new Class1(); //works
           myclass.display(); //works
           myclass.display2(); //works even though its not public :S
           Console.Read();
       }
    }
}
-


我甚至可以访问函数internalvoiddisplay2():S

internal
表示“同一程序集中的任何东西都可以访问”

由于类Class1和类程序位于同一程序集中,类程序可以访问display2()

我想你不小心把它们放在了同一个组件里;如果仔细查看Microsoft的示例代码,您将看到它显示“Assembly1.cs”和“Assembly2.cs”

如果您使用的是VisualStudio,使用不同的程序集测试此问题的最简单方法是在同一解决方案中创建新的类库项目。这将被视为一个单独的组件。您必须向主项目添加对新项目的引用(通过添加引用,然后通过解决方案选项卡)


如果您需要更多信息,这里会有提示。

internal
表示“同一程序集中的任何内容都可以访问”

由于类Class1和类程序位于同一程序集中,类程序可以访问display2()

我想你不小心把它们放在了同一个组件里;如果仔细查看Microsoft的示例代码,您将看到它显示“Assembly1.cs”和“Assembly2.cs”

如果您使用的是VisualStudio,使用不同的程序集测试此问题的最简单方法是在同一解决方案中创建新的类库项目。这将被视为一个单独的组件。您必须向主项目添加对新项目的引用(通过添加引用,然后通过解决方案选项卡)


如果您需要更多信息,则会出现问题。

如果两个类位于同一程序集中,则
内部
将按预期工作

内部
修饰符用于确保类型和成员仅对同一程序集中的文件可用


参考:

如果两个类位于同一个组件中,则
内部
按预期工作

内部
修饰符用于确保类型和成员仅对同一程序集中的文件可用

参考:

来自

内部类型或成员只能在同一文件中访问 装配

由于
Program
Class1
在同一个程序集中,因此不应该出现问题

内部修饰符到底做什么?它说," “内部”的直观含义是“仅限访问此程序。”

换句话说,任何外部程序都无法访问 内部类型

来自

内部类型或成员只能在同一文件中访问 装配

由于
Program
Class1
在同一个程序集中,因此不应该出现问题

内部修饰符到底做什么?它说," “内部”的直观含义是“仅限访问此程序。”

换句话说,任何外部程序都无法访问 内部类型


内部
访问修饰符表示可以从同一程序集中的任何位置访问该成员。 在您的情况下,类“Program”和“Class1”在同一个程序集中,因此,程序可以访问display2(它也是
内部的
并且在同一个程序集中)


如果不希望从Program类访问display2,只需将其设置为私有,因此只能从Class1访问它。

内部访问修饰符表示可以从同一程序集中的任何位置访问成员。 在您的情况下,类“Program”和“Class1”在同一个程序集中,因此,程序可以访问display2(它也是
内部的
并且在同一个程序集中)


如果您不想从Program类访问display2,您可以简单地将其设置为私有的,因此只能从Class1访问它。

可能您混淆了内部的和私有的?可能您混淆了内部的和私有的?我认为组装就像是不同的cs。文件它就像一个完全独立的DLL。看过微软的文档后,他们真的没有很好地解释它!胡特?我认为组装就像是不同的cs。文件它就像一个完全独立的DLL。看过微软的文档后,他们真的没有很好地解释它!啊,那么如果一个.cs文件不在同一个项目中,您将如何访问它?您可以在VS中将多个项目添加到一个解决方案中,并且一个项目中的内部类型和成员对其他项目不可用,但公共项目可用。啊,那么,如果一个.cs文件不在同一个项目中,您将如何访问该文件呢?您可以在VS中将多个项目添加到一个解决方案中,并且一个项目中的内部类型和成员对其他项目不可用,但公共项目可用。已经有多个其他答案说明了这一点。我们不需要另一个答案来回答同样的问题。已经有好几个其他答案来回答这个问题了。我们不需要另一个回答说同样的话。
//Class1.cs
namespace ConsoleApplication1
{
    internal class Class1
    {
       public void display()
       {
           Console.WriteLine("display()");
       }

       internal void display2()
       {
           Console.WriteLine("display2()");
       }
    }
}