jjzjj

constructor

全部标签

c# - 使用 TypeBuilder 为基类创建传递构造函数

假设我有一个SpaceShip类,如下所示:publicclassSpaceShip{publicSpaceShip(){}publicSpaceShip(IRocketFuelSourcefuelSource){}}我想使用TypeBuilder在运行时创建一个继承自SpaceShip的类型,并为SpaceShip中的每个类型定义一个构造函数。除了将参数传递给父级(“直通”构造函数)之外,我不需要构造函数实际做任何事情。例如,如果用C#表示,生成的类型将如下所示:publicclassSpaceShipSubClass:SpaceShip{publicSpaceShipSubClas

c# - 在 C# 中的基本构造函数之前执行派生构造函数

我的问题是,我想将一个对象传递给派生类,但必须在基类构造函数之前完成,因为基类会立即调用派生类的Start()使用该对象的方法。这是基类的摘录(为方便起见,从BarcodeScanner重命名)。publicabstractclassMyBase{publicMyBase(){if(Initialize())this.Start();}publicabstractboolInitialize();publicabstractvoidStart();}这是我正在创建的派生类。classMyDerived:MyBase{privatestringsampleObject;publicMyD

c# - : this(foo) syntax in C# constructors?

时不时地,我会遇到以前见过但从未使用过的语法。这是其中一个时代。谁能解释一下C#构造方法后面的“:this”或“:base”的用途?例如:publicMyClass(SomeArgarg):this(newSomethingElse(),arg){}我的直觉是它用于将默认参数映射到另一个构造方法。 最佳答案 你基本上是对的。this()在当前实例上调用构造函数,base()在当前实例上调用父类(superclass)型的构造函数。它们通常用于处理构造函数重载,因此您可以添加额外的选项而无需将内容分解为单独的方法。

c# - 这是 "Bastard injection anti-pattern"的一个很好的例子吗?

我看到首席开发人员正在编写这样的代码,并且在阅读MarkSeemann的书“.NET中的依赖注入(inject)”时,我想知道特定的"new"是否是“外来的”,因此是“BastardInjection”“??publicclassSessionInitServiceManager{protectedreadonlyICESTraceManager_traceManager;protectedreadonlyILogger_logger;protectedreadonlyIAggregateCalls_aggregator;protectedreadonlyIMultiCoreRepos

c# - 在 C# 中初始化静态变量内联或静态构造函数的区别

我想知道初始化静态成员内联有什么区别:classFoo{privatestaticBarbar_=newBar();}或在静态构造函数中初始化它,如下所示:classFoo{staticFoo(){bar_=newBar();}privatestaticBarbar_;} 最佳答案 如果您的类型中有一个静态构造函数,它会由于beforefieldinit而改变类型初始化不再应用标志。它还会影响初始化顺序-变量初始化器都在静态构造函数之前执行。据我所知,就这些。 关于c#-在C#中初始化静

c# - 在构造函数中调用基础构造函数和其他构造函数

标题可能听起来令人困惑。我想要的是在构造函数内部调用同一个类的构造函数和基类的构造函数。也许我第一次尝试解决这个问题可以解释我的问题:publicMyClass(MyClassobj):base(obj),this(){}但是这种表示法不起作用。有解决办法吗? 最佳答案 不,您不能这样做,原因如下:当构造函数调用其基类的构造函数时,后一个调用是相关构造函数的一部分。所以你不能调用同一个类的另一个构造函数和基类的构造函数,因为前一个调用已经包含对基类构造函数的调用-你不能两次初始化你的基类

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

亲爱的,像这样的问题已经alreadyasked,但在答案中没有对我看到的问题的解释。问题:C#ProgrammingGuide说:Astaticconstructorisusedtoinitializeanystaticdata,ortoperformaparticularactionthatneedsperformedonceonly.Itiscalledautomaticallybeforethefirstinstanceiscreatedoranystaticmembersarereferenced.特别是,在创建类的任何实例之前调用静态构造函数。(这不能确保静态构造函数在创建

javascript - typescript 错误 : A 'super' call must be the first statement in the constructor when a class contains initialized properties

我的项目中有以下typescript错误..让我分享一下一个示例,以便您了解正在处理的内容。moduleCoreWeb{exportclassControllerimplementsIController{public$q;public$rootScope;public$scope:ng.IScope;public$state:ng.ui.IStateService;public$translate:ng.translate.ITranslateService;publicappEvents;publiccommonValidationsService;publicdefaultPag

javascript - 当我尝试在 ace.js 中创建 Range 对象时,抛出 "Illegal Constructor"错误

我试图在我的代码中为ace.js编辑器创建一个Range对象,但它不起作用。它以我无法弄清楚的方式失败。在theAcedocumentation,这个构造函数是:newRange(NumberstartRow,NumberstartColumn,NumberendRow,NumberendColumn)但是当我在我的代码中尝试这样做时:newRange(0,0,0,1)它引发了一个UncaughtTypeError:Illegalconstructor错误。是什么导致了这种行为,为什么它与文档不匹配? 最佳答案 Range是大多数浏

javascript - JS 构造函数中的返回语句

当JavaScript函数体中的return语句用作新对象(使用“new”关键字)的构造函数时,它有什么作用? 最佳答案 通常return只是退出构造函数。但是,如果返回值是一个对象,它会被用作new表达式的值。考虑:functionf(){this.x=1;return;}alert((newf()).x);显示1,但是functionf(){this.x=1;return{x:2};}alert((newf()).x);显示2. 关于javascript-JS构造函数中的返回语句,我