初始化静态成员时产生的盲区_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 初始化静态成员时产生的盲区

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

 2014/10/8 3:23:47  vakey  程序员俱乐部  我要评论(0)
  • 摘要:静态成员属于类而不是实例。静态成员的应用范围很广,比如,可在应用程序的全局内获取或设置公共的静态成员的值,这类似C++的全局变量,但是使用不当也会有麻烦。classTest{privatestaticstringstrStaticName="Hello";//无参构造器publicTest(){}//有参构造器publicTest(stringstrName){strStaticName=strName;}publicstringGetName(){returnstrStaticName;}
  • 标签:

静态成员属于类而不是实例。静态成员的应用范围很广,比如,可在应用程序的全局内获取或设置公共的静态成员的值,这类似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";

              }

上一篇: 软件工程管理的44个教训(译) 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名