static
[code=C#][/code]
class Circle
{
public Circle()
{
radius = 0.0;
Numcircles++;
}
public Circle(int initialRadius)
{
radius = initialRadius;
NumCircles++;
}
。。。
private int radius;
public static int initialRadius= 0;
}
static 有点迷糊,此处NumCircles的值是怎么变的?麻烦达人给解释下。越详细越好。谢谢!
------解决方案--------------------NumCircles定义呢?
------解决方案--------------------public static 表示全局变量的意思,可以在别的模块引用其值。
------解决方案--------------------静态NumCircles变量统计你在应用程序中实例化了几次,每实例化一次,就会增1,直到程序关闭,静态变量才会释放。
------解决方案--------------------苍井空是全世界的,钓鱼岛是中国的
苍井空就类似那个static,属于这个类的,不是任何一个对象所单独拥有
------解决方案--------------------重载了构造函数,UumCircles的变化跟重载几次没关系,类的实例化只能调用其中的某一个构造函数。
------解决方案--------------------你只要理解成,如果不是static 变量(方法),那么你在其他类里要调用这个变量,或是方法,则需要实例化那个类才能使用。但是如果是static的话,你就不用实例化那个类了,只需要直接类名.变量(方法)就行了。
------解决方案--------------------public Circle()
{
radius = 0.0;
Numcircles++;
}
public Circle(int initialRadius)
{
radius = initialRadius;
NumCircles++;
}
这个都是构造函数 每次很定只能调用一个 。所以 NumCircles++;就只能执行一次咯
------解决方案--------------------比如 var a= new Circle()那么 a。radius=0;
var b=new Circle(10)那么 b。radius=10;
懂了?
------解决方案--------------------在同一个程序里:
第一次实例化一个对象: var a= new Circle()那么 a.radius=0;NumCircles=1;
第二次实例化一个对象: var b=new Circle(10)那么 b.radius=10;NumCircles=2;
如果NumCircles不是static,那么每次实例化的时候NumCircles都是从0开始加。
------解决方案--------------------private int radius;
radius = 0.0;这里错了!
------解决方案--------------------C# code
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Circle a = new Circle();
MessageBox.Show(Circle.NumCircles.ToString() );
}
private void button2_Click(object sender, EventArgs e)
{
Circle a = new Circle();
MessageBox.Show(Circle.NumCircles.ToString());
}
}
class Circle
{
private int num = 0;
public static int NumCircles= 0;
private int radius;
public static int initialRadius= 0;
public Circle()
{
radius = 0;
NumCircles++;
num++;
}
public Circle(int initialRadius)
{
radius = initialRadius;
NumCircles++;
num++;
}
}
}