我真的不明白为什么,但是似乎内部访问修饰符不起作用:S
我看了这个教程:
http://msdn.microsoft.com/en-us/library/7c5ka91b(v=vs.110).aspx
但是对我来说,它可以编译。
另外,我有一本书买了Illustrated 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();
}
}
}
--
//Class1.cs
namespace ConsoleApplication1
{
internal class Class1
{
public void display()
{
Console.WriteLine("display()");
}
internal void display2()
{
Console.WriteLine("display2()");
}
}
}
我什至可以访问内部void display2()函数:S
internal
表示“同一程序集中的任何内容都可以使用”。
由于您的Class1类和Program类在同一程序集中,因此Program类可以访问display2()。
我认为您不小心将它们放在了同一组件中。如果仔细查看Microsoft的示例代码,您会看到它显示为“ Assembly1.cs”和“ Assembly2.cs”
如果使用的是Visual Studio,则用其他程序集进行测试的最简单方法是在同一解决方案中创建一个新的类库项目。这将被视为一个单独的程序集。您必须将对新项目的引用添加到主项目中(通过“添加引用”,然后通过“解决方案”选项卡)。
如果您需要更多信息,请输入a Stack Overflow question about "What's an assembly?"。
我是一名优秀的程序员,十分优秀!