我有一个非常基本的问题,甚至可以惹恼你,但当我开始阅读Visual c#电子书时,我会想到这一点。
他们已经提到:: 令人惊讶的是,Circle类目前没有实际用途。默认情况下,当您将方法和数据封装在类中时,该类会形成外部世界的边界。类中定义的字段(例如半径)和方法(例如Area)可以通过类中的其他方法看到,但不能被外部世界看到 - 它们是类的私有。因此,虽然您可以在程序中创建Circle对象,但是您无法访问其radius字段或调用其Area方法,这就是为什么该类没有多大用处!但是,您可以使用public
修改字段或方法的定义这是给出的Circle类
class Circle
{
int radius;
double Area()
{
return Math.PI * radius * radius;
}
}
因此,私有字段无法访问,但是当我在Console项目中尝试这样的东西时,我正在成功运行它。是否我们在课堂上有主要功能,这就是为什么我可以通过Program类的对象来获取私有字段的原因?
class Program
{
int number;
static void Main(string[] args)
{
Program ObjProgram = new Program();
ObjProgram.number = 10;
Console.ReadLine();
}
}
答案 0 :(得分:8)
您可以在同一个类中访问私有字段 - 该类的任何实例可以访问任何其他实例的私有字段。
因此,您可以创建Program
并从Program.Main
内访问其私人字段。
如果你是从另一个类的方法中尝试过的,那就不行了。
class Program
{
int number;
static void Main(string[] args)
{
Program ObjProgram = new Program();
ObjProgram.number = 10; // works fine
Console.ReadLine();
}
}
class SomeOtherClass
{
void SomeMethod()
{
Program program = new Program();
program.number = 10; // does not compile!
}
}
答案 1 :(得分:1)
主要方法是Program class
的成员因此它(主)可以访问程序类的私人成员......
例如
class a
{
int x;
void somemethod1()
{
x=10; //this will work fine
}
}
class b
{
int y;
void somemethod2()
{
a a1=new a();
a1.x=10; //this wont work because a1.x is private ... can only be accessible my members of class a
}
}