using System;class Car
{
private String color;
private int meter; public Car()
{
color = "黄色";
meter = 12345;
} public void setColor(String theColor)
{
color = theColor;
} public void setMeter(int theMeter)
{
meter = theMeter;
} public string Show()
{
return "color=" + color + "meter=" + meter;
} public static void Main()//String[] args
{
Car car1 = new Car();
Console.WriteLine(car1.Show());
//
Car car2 = new Car();
car2.setColor("黄色");
car2.setMeter(98765);
Console.WriteLine(car2.Show());
}
}
以上代码定义了个Car类。 但为什么在Car类的Main方法里就直接能用这个Car类创建对象呢? 创建对象的时候我的Car类不是还能定义好吗? 怎么都可以拿来创建对象呢。???
在线等我就这点分了
{
private String color;
private int meter; public Car()
{
color = "黄色";
meter = 12345;
} public void setColor(String theColor)
{
color = theColor;
} public void setMeter(int theMeter)
{
meter = theMeter;
} public string Show()
{
return "color=" + color + "meter=" + meter;
} public static void Main()//String[] args
{
Car car1 = new Car();
Console.WriteLine(car1.Show());
//
Car car2 = new Car();
car2.setColor("黄色");
car2.setMeter(98765);
Console.WriteLine(car2.Show());
}
}
以上代码定义了个Car类。 但为什么在Car类的Main方法里就直接能用这个Car类创建对象呢? 创建对象的时候我的Car类不是还能定义好吗? 怎么都可以拿来创建对象呢。???
在线等我就这点分了
不能认为是定义好了以后再调用Main的吗?
就像在定义其他方法一样,
定义的时候,内部代码是不执行的啊。
等到程序说有的定义都结束以后,
才会开始运行Main方法的啊
public static void Main()//String[] args
!!!这个方法是静态的静态方法的调用是不需要实例化的,
静态方法与实际化的内容是隔离的,
这个方法本身并没有被对象进一步的实例化,
所以不存在循环NEW的情况.把你的代码重构一下,去掉static,你看看还能编译通过嘛?using System;class Car
{
private String color;
private int meter; public Car()
{
color = "黄色";
meter = 12345;
} public void setColor(String theColor)
{
color = theColor;
} public void setMeter(int theMeter)
{
meter = theMeter;
} public string Show()
{
return "color=" + color + "meter=" + meter;
} public static void Main()//String[] args
{
NewMethod();
} //这里没用到static!!!
private void NewMethod()
{
Car car1 = new Car();
Console.WriteLine(car1.Show());
//
Car car2 = new Car();
car2.setColor("黄色");
car2.setMeter(98765);
Console.WriteLine(car2.Show());
}
}
上面的情况好像跟我理解的不一样啊。?/ 所以纳闷呢 ? 等待高手解释!!!
public int mm(int a)
{
if (a == 0) return 1;
else return a * mm(a - 1);
}
难道根据楼主的认为这个函数不能使用了么?感觉应该套用C++ "先声明后使用”的概念来解释,只要一个变量或函数声明过了,编译器就能根据声明的类型来分配内存,在编译的时候就不会出现问题了。Car car1 = new Car();这句语句的意思就是在堆中申请一段足够的空间,用来存放一个Car类型的数据。而且是在堆中申请的空间,和栈不一样,不需要特别指明分配连续空间的大小。因此这句语句和你类的定义有没有结束没什么关系。