static 表示静态,它与该实例无关,在任何地方都可以使用“完全限定名”进行访问,而实例对象则不同,它属于该实例中的一个对象,该实例必须被实例化过才会存在这个对象,也必须使用实例句柄来访问它。public 和 private 是表示它的有效(作用)域,出了这个有效域(某对象是 private 且在类外访问),就算能访问(比如为 static)到也无效可见,二个是完全不同的概念,静态、非静态和 public、private 完全是二回事,一个是成员类型一个是有效范围
解决方案 »
- 跪求大侠帮忙!OracleDataAdapter.Update()批量更新数据时候遇到问题!
- C#中怎样在图片的给定区域查找矩形黑块并给出坐标?
- 提问:howto- winform程序中调用dos命令不弹出dos窗口
- List对象的Any方法和Exists有什么区别?
- 大声吼一声:我该怎么办?
- 如何发送纯文本至打印机?(有条码打印机经验的老大来看看)
- 水晶报表出错:无效报表源
- winform程序如何在系统休眠或者锁屏时继续执行
- 如何在注册表中正确注册Crystal Reports for Visual Studio.NET?????
- RS232串口DataReceived事件接收2组数据有较长间隔的问题
- 两个数据库之间导数据,20多个表,有没有好的解决方案啊,不要告诉我要写20个select和insert吧??星期一就要验收了,怎么办啊
- 哪里可以下载devexpress xtra suite全系列的??
定義公共類型﹕變量﹑結構﹑類﹑屬性﹑方法
private
定義私有類型﹕變量﹑屬性﹑方法
static
定義靜態成員﹕就是無需實例化也可以訪問的成員
{
private static Elevator elevatorA; //这里如果不加static程序编译无法通过,为什么? public static void Main()
{
Console.WriteLine("The simulation has commenced");
elevatorA = new Elevator();
elevatorA.LoadPassenger();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.InitiateNewFloorRequest();
elevatorA.ReportStatistic();
Console.WriteLine("The simulation has ended");
Console.ReadLine();
}
}class Elevator
{
private int currentFloor = 0;
private int requestedFloor = 0;
private int totalFloorsTraveled = 0;
private int totalTripsTraveled = 0;
private Person passenger; //而这里加和不加static都可以通过为什么?
public void LoadPassenger()
{
passenger = new Person();
}
public void InitiateNewFloorRequest()
{
requestedFloor = passenger.NewFloorRequest();
Console.WriteLine("elevatorA:Departing floor:" + currentFloor + "Traveling to floor:" + requestedFloor);
totalFloorsTraveled = totalFloorsTraveled + Math.Abs(currentFloor - requestedFloor);
totalTripsTraveled = totalTripsTraveled + 1;
currentFloor = requestedFloor;
} public void ReportStatistic()
{
Console.WriteLine("Total floors traveled:" + totalFloorsTraveled);
Console.WriteLine("Total trips traveled:" + totalTripsTraveled);
}}class Person
{
private Random randomNumberGenerator;
public Person()
{
randomNumberGenerator = new Random();
} public int NewFloorRequest()
{
return randomNumberGenerator.Next(0,50);
}
}
2. 实际上上面的朋友已经作了很好的解答,稍作补充。Main()必须声明为静态的,这你应该了解。假设在Building类中把elevatorA声明为类的域,为了调用该域,必须创建Building类的实例,而你在Main()函数中并没有创建Building类的实例,你还想直接调用域elevatorA,当然产生错误!你若把elevatorA声明为静态的,它就隶属于类本身,而不隶属于任何对象,这样你在Main()中直接调用就没有错误啦。
不知对你而言能否明白,再说。
各位帮忙了。
各位帮忙了。
1. 若不加public,则默认是private--------------------------
如不加 pubiic 就等于是写的 private class class1
在c#中,变量、方法在class和struct中默认是private,
在vb中,变量、方法在class和struct中默认是public,
在声明class时,如果没有访问修饰符,默认时public的
private a1{ }
}当a1 没有public 构造时,你是无法在类外用实例句柄调用它的
//xxxx
private class b1 {
//xxxx
}
}
//xxxx
private class b1 { //默认是private
//xxxx
}
}