CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于静态构造函数,大家帮忙

楼主xaodoudou(我不想做潜水员)2005-01-28 11:12:29 在 .NET技术 / C# 提问

这么一个类    
   
  public   class   Test{  
      private   Hashtable   ht;  
    public   static   Check(){  
   
    return   ht["a"]  
  }  
  我想写一个静态构造函数初始化   ht,可是不知道怎么写,大家帮帮忙,要测试一下噢 问题点数:100、回复次数:20Top

1 楼gabriel1(说自己的话,让别人走路去吧)回复于 2005-01-28 11:15:10 得分 0

啥意思?  
  为什么要把构造函数写成静态?Top

2 楼brightheroes(在地狱中仰望天堂)回复于 2005-01-28 11:17:59 得分 0

静态构造函数,只能对静态字段进行初始化吧  
  你这个ht是实例的,不能这么用Top

3 楼mao5000(怕鱼的水)回复于 2005-01-28 11:19:28 得分 0

是阿。我觉得奇怪。。。为啥要把构造函数写成静态的?Top

4 楼shenyisyn(魔法师)回复于 2005-01-28 11:21:13 得分 0

构造函数   不能静态     静态了就不叫构造函数了Top

5 楼mao5000(怕鱼的水)回复于 2005-01-28 11:21:18 得分 0

ht   要在   Check()重新实例的。Top

6 楼brightheroes(在地狱中仰望天堂)回复于 2005-01-28 11:23:06 得分 10

静态的叫做类型构造器Top

7 楼saucer(思归)回复于 2005-01-28 11:24:52 得分 20

>>>构造函数   不能静态     静态了就不叫构造函数了  
   
  可以的  
   
  public   class   Test{  
      private   Hashtable   ht;  
    static   Test()  
    {  
                ht   =   new   Hashtable();  
                ht.Add("a","x");  
    }  
    public   static   object   Check(){  
   
    return   ht["a"];  
  }  
   
   
  see  
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfstaticconstructors.aspTop

8 楼trnbo(【没有蛀牙】)回复于 2005-01-28 11:28:08 得分 10

如果一些操作只希望被执行一次。这时候就可以考虑使用静态构造函数。当然如果设计的面向对象一些的话,那就是使用单件模式了。Top

9 楼saucer(思归)回复于 2005-01-28 11:28:18 得分 10

change  
   
  private   Hashtable   ht;  
  ===>  
  private   static   Hashtable   ht;Top

10 楼brightheroes(在地狱中仰望天堂)回复于 2005-01-28 11:28:35 得分 10

思归老大  
  这个static   Test里面,不能ht   =   new   Hashtable()吧  
  这个Hashtable是实例的,不是static的Top

11 楼trnbo(【没有蛀牙】)回复于 2005-01-28 11:28:46 得分 10

静态构造函数自动被调用,不能被显式调用。  
  虽然提供了许多约束条件,但是静态构造函数执行的确切时间和顺序是不确定的:  
  一个类的静态构造函数在这个类的任何实例被创建前执行。  
  一个类的静态构造函数在类的任何静态成员被引用前执行。  
  一个类的静态构造函数在它的所有派生类的静态构造函数执行之后执行。  
  一个类的静态构造函数从不会被执行一次以上。Top

12 楼brightheroes(在地狱中仰望天堂)回复于 2005-01-28 11:28:59 得分 0

晕,呵呵  
  没有看到   change  
  Top

13 楼flyingdream123()回复于 2005-01-28 11:29:26 得分 0

public   static   Check(){  
  //初始化ht  
    return   ht["a"]  
  }Top

14 楼zzcwhq(zzcwhq)回复于 2005-01-28 11:41:43 得分 10

静态构造函数只能初始化静态成员!Top

15 楼johnczy(JohnChen)回复于 2005-01-28 11:52:27 得分 5

思归说的不错,不过在你的例子中  
  private   Hashtable   ht;  
  还是要改成  
  private   static   Hashtable   ht;  
  静态的Check()   只能调静态的ht。  
  Top

16 楼Seeko0(阿 枫(终点又回到起点,到现在我才发现))回复于 2005-01-28 11:54:12 得分 0

public   class   Test{  
          public   Test(){}  
          public   static   Test()     //静态构造函数,只会在Test第一次执行时有用  
        {  
                  ht.Add("a","a");                 //赋值        
          }  
          private   static   Hashtable   ht;   //将ht也定义成静态函数  
          public   static   Check(){  
                  return   ht["a"]  
          }  
  }Top

17 楼pingnt(淡蓝色的雪)回复于 2005-01-28 12:04:01 得分 0

public   class   Test{  
    private   static   Hashtable   ht;  
    public   Test(){  
      //非静态成员的初化;  
    }  
    public   static   Test(){  
      //此初始化ht;  
    }Top

18 楼gabriel1(说自己的话,让别人走路去吧)回复于 2005-01-28 14:08:28 得分 5

还是老大厉害,一下就说中答案:  
   
      静态构造方法是在静态成员/方法被调用时执行的一段初始化方法.Top

19 楼xaodoudou(我不想做潜水员)回复于 2005-01-28 17:09:19 得分 0

果然是思归,问题解决   !  
   
  什么时候我也要混成五个星!!  
  多谢各位Top

20 楼possible_Y(████本人签名需要刮开,方可看到 )回复于 2005-01-28 17:30:42 得分 10

静态构造函数主要是用来初始化readonly   static字段的Top

相关问题

  • java有静态构造函数吗?
  • 构造函数一定要是静态的么??
  • 静态对象的构造函数的调用时机
  • 构造函数
  • 构造函数
  • 构造函数??
  • 构造函数
  • 函数构造
  • @@@@@@ 构造函数 @@@@@
  • 请问静态构造函数与普通的构造函数有什么区别?

关键词

  • 函数
  • 执行
  • check
  • 静态
  • ht
  • 初始化
  • 构造函数
  • hashtable
  • 思归
  • 调用

得分解答快速导航

  • 帖主:xaodoudou
  • brightheroes
  • saucer
  • trnbo
  • saucer
  • brightheroes
  • trnbo
  • zzcwhq
  • johnczy
  • gabriel1
  • possible_Y

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo