A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Xi_SHENG: 中级黑马   /  2013-6-12 14:35  /  2455 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当给一个普通类添加静态字段后,系统会默认为该类生成一个静态构造函数。
这句命题是否正确?如果正确的话将静态字段替换成其他静态成员(比如静态方法)是否成立。
ps:为什么通过reflector反编译一个有静态字段的类没有发现有静态构造函数

QQ图片20130612143522.jpg (15.66 KB, 下载次数: 1)

QQ图片20130612143522.jpg

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

5 个回复

倒序浏览
1. 静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作;
2. 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数;
3. 例如:
  class SimpleClass
{
    // Static constructor
    static SimpleClass()
    {
        //...
    }
}
4.在程序中,用户无法控制何时执行静态构造函数。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量。
因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用。
在程序中我们可以这样写:
class SimpleClass
{
static public Object object;
// Static constructor
static SimpleClass()
{
// Initialize static parameter
somthing
}
}
也可以这样写,这和上面的做法其实没有区别:
class SimpleClass
{
static public Object object = new Object();
}
在使用静态构造函数的时候应该注意以下几点:
1、静态构造函数既没有访问修饰符,也没有参数。
--因为是.NET调用的,所以像public和private等修饰符就没有意义了。
2、在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类。
--也就是说我们无法直接调用静态构造函数,也不可能知道静态构造函数何时会被调用。
3、一个类只能有一个静态构造函数。
4、无参数的构造函数可以与静态构造函数共存。
--尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
5、最多只运行一次。
6、静态构造函数不可以被继承。
7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
调用例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test1_constrator
{
class Program
{
static void Main(string[] args)
{
Class1 o1 = new Class1();
Class1 o2 = new Class1();
}
}
class Class1
{
private static int count = 0;
static Class1(){
count++;
System.Console.Write("Static" + count.ToString());
}
public Class1()
{
count++;
System.Console.Write("Public" + count.ToString());
}
}
}


评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
来自百度百科
回复 使用道具 举报
本帖最后由 关关雎鸠 于 2013-6-12 20:00 编辑

不管类有没有字段,只要这个类声明有效的,它都有默认构造函数。

看错 了问题。。
回复 使用道具 举报
...完全不懂...
我知道的是..静态程员...在类new 之前是就已经有默认值了,它不依赖类的产生而产生
而且静态程序..只有静态方法能访问,同理静态方法不能访问非静态成员

第二个....没有静态构造函数这一说吧....


不知道我说的对不对..请高手指导

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马