首页 > 学院 > 开发设计 > 正文

初始化静态成员时产生的盲区

2019-11-17 02:50:52
字体:
来源:转载
供稿:网友

初始化静态成员时产生的盲区

静态成员属于类而不是实例。静态成员的应用范围很广,比如,可在应用程序的全局内获取或设置公共的静态成员的值,这类似C++的全局变量,但是使用不当也会有麻烦。

class Test { PRivate static string strStaticName = "Hello"; //无参构造器 public Test() { } //有参构造器 public Test(string strName) { strStaticName = strName; }

public string GetName() { return strStaticName; }

}

static void Main(string[] args) { Console.WriteLine("创建t1实例时,名称设置为东方"); //创建实例t1 Test t1 = new Test("东方"); Console.WriteLine("所以使用GetName方法获取的名称为:{0}",t1.GetName()); Console.WriteLine("");

//创建实例t2 Console.WriteLine("创建t2实例时,名称未设置"); Test t2 = new Test(); string strName = t2.GetName(); Console.WriteLine("但通过GetName方法获取的名称却为:{0}",strName); Console.Read();

}

调试后:

分析:在一个应用程序中,无论创建了一个类的多少实例,该类的静态字段都只被初始化一次。

解决:1)取消静态关键字static

2)都使用有参的构造器

3)在无参构造器中,给静态字段赋值

public Test()

{

strStaticName="Hello";

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表