日期:2014-05-17  浏览次数:20851 次

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++;

        }
    }
}