C# 类和实例构造函数

Posted

技术标签:

【中文标题】C# 类和实例构造函数【英文标题】:C# Class and Instance Constructors 【发布时间】:2014-05-05 22:56:16 【问题描述】:

MSDN RyuJIT blog entry 给出了设置 CTP3 的说明:

在 RyuJIT 最终确定之前需要做一些棘手的事情:添加对 Microsoft.Numerics.Vectors.Vector 到一个类构造函数,它将 在使用新 Vector 类型的方法之前调用。 ID 建议把它放在你程序的入口类的构造函数中。 它必须出现在类构造函数中,而不是实例构造函数中。

我在 Objective-C 中的类/实例构造方面比在 C# 中要好得多。他是在谈论不同的概念吗? C#中的类构造函数和实例构造函数有什么区别?在这种情况下,“类构造函数”是否只是无参数构造函数?

【问题讨论】:

“类构造函数”是使用 IL 时常用的术语。在 C# 中,人们说static 构造函数。 【参考方案1】:

我认为这是指静态构造函数

【讨论】:

【参考方案2】:

构造函数 = 静态构造函数

实例构造函数 = 普通构造函数

例如,

class MyClass

    // Static/Class constructor.
    // Note: Static constructors cannot have visibility modifier (eg. public/private),
    //       and cannot have any arguments.
    static MyClass()
    
        ... // This will only execute once - when this class is first accessed.
    

    // Normal/Instance Constructor.
    public MyClass(...)
    
        ... // This will execute each time an object of this class is created.
    

因此,例如,考虑以下代码:

static void Main(string[] args)

    var a = new MyClass();  // Calls static constructor, then normal constructor.
    a.DoSomething();
    var b = new MyClass();  // Calls normal constructor only.
    b.DoSomething();

另外,请考虑以下代码:

static void Main(string[] args)

    MyClass.SomeStaticMethod();       // Calls static constructor, then SomeStaticMethod().
    MyClass.SomeOtherStaticMethod();  // Calls SomeOtherStaticMethod() only.

    // Note: None of the above calls the normal constructor.

【讨论】:

以上是关于C# 类和实例构造函数的主要内容,如果未能解决你的问题,请参考以下文章

九结构和类(结构的概念,类的概念,声明,构造函数,对象的实例化,类和对象的关系,实例的和静态的)

c# 中的类和构造函数在不同程序集中的 c# 中的默认访问说明符是啥 [重复]

《C#零基础入门之百识百例》(四十三)类的构造和析构函数 -- 模拟用户注册

class类和构造函数在使用new创建实例对象时候都做了什么?

C# 构造函数总结

C# 关于 构造函数问题 关于对象实例化