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#零基础入门之百识百例》(四十三)类的构造和析构函数 -- 模拟用户注册