Tag: 构造函数

在初始化惰性实例时,将参数传递给构造函数

public class myClass { public myClass(String InstanceName) { Name = InstanceName; } public String Name { get; set; } } // Now using myClass lazily I have: Lazy myLazy; Console.WriteLine(myLazy.Value.Name); 我的问题是当我们使用惰性实例时如何将InstanceName传递给myClass构造函数?

如何防止C#中的inheritance者调用基础构造函数?

我有一个(写得很差)基类,我想包装在一个代理对象中。 基类类似于以下内容: public class BaseClass : SomeOtherBase { public BaseClass() {} public BaseClass(int someValue) {} //…more code, not important here } 而且,我的代理类似于: public BaseClassProxy : BaseClass { public BaseClassProxy(bool fakeOut){} } 如果没有“fakeOut”构造函数,则应该调用基础构造函数。 然而,有了它,我预计它不会被调用。 无论哪种方式,我要么需要一种方法来不调用任何基类构造函数,或者有其他方式来有效地代理这个(邪恶的)类。

静态构造函数会导致性能开销吗?

最近在dotnetpearls.com上的一篇文章中读到这里的说法,静态ctors采取了大量的性能。 无法理解为什么?

创建对象的最佳方式

这似乎是非常愚蠢和基本的问题,但我试图谷歌它,但无法找到一个满意的答案, public class Person { public string Name { get; set; } public int Age { get; set; } public Person(){} public Person(string name, int age) { Name = name; Age = age; } //Other properties, methods, events… } 我的问题是,如果我有这样的课程,创建一个对象的最佳方法是什么? Person p=new Person(“abc”,15) 要么 Person p=new Person(); p.Name=”abc”; p.Age=15; 这两种方法有什么区别,创建对象的最佳方法是什么?

由于其保护水平无法进入?

我对编码仍然很陌生,虽然这个简单的程序只是为了学习构造函数的工作方式,但我仍然想知道为什么我会收到这个错误。 using System; public class methodTest { int a; int b; int c; public methodTest(int i, int j, int k) { a = i; b = j; c = k; } } public class methodObj { static void Main() { methodTest obj = new methodTest(10, 20, 30); Console.WriteLine(“obj = ” + obj.b); Console.ReadKey(); } } […]

静态构造函数在实例构造函数之后调用?

亲爱的,这个问题已经被问过了 ,但是答案中没有解释我看到的问题。 问题: C#编程指南说: 静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作。 在创建第一个实例或引用任何静态成员之前会自动调用它。 特别是,在创建任何类的实例之前调用静态构造函数。 (这不能确保静态构造函数在创建实例之前完成,但这是另一回事。) 我们来看一下示例代码: using System; public class Test { static public Test test = new Test(); static Test() { Console.WriteLine(“static Test()”); } public Test() { Console.WriteLine(“new Test()”); } } public class Program { public static void Main() { Console.WriteLine(“Main() started”); Console.WriteLine(“Test.test = ” + Test.test); Console.WriteLine(“Main() finished”); } } […]

使用默认参数重载的构造函数

我不小心在C#中重载了一个构造函数,如下所示: public MyClass(string myString) { // Some code goes here } public MyClass(string myString, bool myParameter = false) { // Some different code here } 使用此代码,我的项目编译得很好。 如果我用一个string参数调用构造函数,C#如何决定我想使用哪个构造函数? 为什么语法允许这个function?

如何在C#中禁用无参数构造函数

abstract class CAbstract { private string mParam1; public CAbstract(string param1) { mParam1 = param1; } } class CBase : CAbstract { } 对于类CBase,应该通过提供参数来初始化它,那么如何禁用CBase类的无参数构造函数?

将当前对象类型传递给基础构造函数调用

我如何获取inheritance类的Type并将其传递给类inheritance的基类构造函数? 请参阅下面的代码示例: // VeryBaseClass is in an external assembly public abstract class VeryBaseClass { public VeryBaseClass(string className, MyObject myObject) { } } // BaseClass and InheritedClass are in my assembly public abstract class BaseClass : VeryBaseClass { public BaseClass(MyObject myObject) : base(this.GetType().Name, myObject) // can’t reference “this” (Type expected) { } } public class InheritedClass […]

C#Struct No无参数构造函数? 看看我需要完成什么

我使用结构传递给非托管DLL,因为 – [StructLayout(LayoutKind.Sequential)] public struct valTable { public byte type; public byte map; public byte spare1; public byte spare2; public int par; public int min; public byte[] name; public valTable() { name = new byte[24]; } } 上面的代码将无法编译,因为VS 2005会抱怨“Structs不能包含显式无参数构造函数”。 为了将这个结构传递给我的DLL,我必须传递一个struct的数组,如valTable[] val = new valTable[281]; 我想要做的是当我说new ,构造函数被调用并且它创建了一个像我试图演示的字节数组,因为DLL正在寻找每个维度中大小为24的字节数组。 我怎么能做到这一点?