首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

static,该如何处理

2012-10-10 
static[codeC#][/code]class Circle{public Circle(){radius 0.0;Numcircles++;}public Circle(int ini

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

热点排行