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

本文详细解析了C#中静态成员的概念与应用,探讨了如何正确地使用静态成员,并通过实例演示了静态成员在不同实例间共享的特点。此外,还提供了几种避免因误用静态成员而引发问题的方法。

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

 

  

 

转载于:https://www.cnblogs.com/vakeynb/p/static.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值