草庐IT

构造器

全部标签

c# - 在基础构造函数中使用 'this'?

我正在从事一个涉及大量接口(interface)和继承的项目,这开始变得有点棘手,现在我遇到了一个问题。我有一个抽象类State,它接受一个Game对象作为构造函数参数。在我的Game类的构造函数中,它接收一个State。这个想法是,当从抽象基类Game继承时,当调用基类的构造函数时,你给它一个初始的State对象。但是,此State对象采用与您在其中创建它的游戏相同的游戏。代码如下所示:publicclassPushGame:ManiaGame{publicPushGame():base(GamePlatform.Windows,newPlayState(this),60){}}但是

c# - 如何将参数传递给反序列化json的构造函数

我在使用Newtonsoft.Json反序列化对象时将一些父实例传递给构造函数时遇到了一个小问题。假设我有以下类(class)publicclassA{publicstringStr1{get;set;}publicIListBs{get;set;}}publicclassB{publicB(Aa){//ashouldnotbenull!Console.WriteLine(a.Str)}}现在我像这样对对象a进行序列化和反序列化:Aa=newA()a.Bs=newList()a.Bs.Add(newB(a));a.Bs.Add(newB(a));a.Bs.Add(newB(a));va

c# - 抽象类中 'public'构造函数的相关性

抽象类中的“公共(public)”构造函数是否有任何相关性?我想不出任何可能的方法来使用它,在那种情况下它不应该被编译器视为错误(C#,不确定其他语言是否允许这样做)。示例代码:internalabstractclassVehicle{publicVehicle(){}}C#编译器允许编译此代码,但我无法从外部世界调用此构造函数。它只能从派生类中调用。所以它不应该只允许“protected”和“私有(private)”修饰符。请评论。 最佳答案 没有理由为抽象类使用公共(public)构造函数。我认为编译器没有提示的原因很简单,他们

c# - 不能为接口(interface)模拟传递构造函数参数

当我调试代码并阅读创建mockLessonplannerAFactory的行时,我收到错误:Constructorargumentscannotbepassedforinterfacemocks.varmockSchoolclassCodeService=newMock();varmockDateService=newMock();varmockLessonplannerAFactory=newMock(mockDateService.Object);varmockLessonplannerBFactory=newMock(mockDateService.Object);varserv

c# - 为什么 ArgumentNullException 和 ArgumentException 的构造函数中的参数是相反的?

在设计软件时,我一直赞成一致性,除非有真正充分的理由不一致。在.NETFramework中,我们有ArgumentNullException和ArgumentOutOfRangeException,它们都派生自ArgumentException。所有这3个都有一个接受两个字符串参数的构造函数-一个用于paramName,一个用于异常message。为什么两个派生类都颠倒了参数顺序?!publicArgumentNullException(StringparamName,Stringmessage):base(message,paramName){}publicArgumentOutOf

c# - TypeScript 中是否有类似于 C# 实现的 foreach 构造?

我非常喜欢在C#中为“for循环”使用foreach结构。我认为它非常干净、高效且可读。TypeScript中是否有类似的结构?例如,而不是这个:setAuthorFilters(selectedAuthors){selectedAuthors.forEach(x=>this.setAuthorFilter(x));this.updateUrl();}setAuthorFilter(selectedAuthor){this.vm.SelectAuthors=this.vm.SelectAuthors.filter(x=>x.id!==selectedAuthor.id);this.vm

C# 服务 - OnStart() v 构造函数

我试图了解OnStart()和ServiceBase派生类中的构造函数之间的区别。从周围阅读看来,第一次启动服务时(打开机器后),构造函数被调用。此后,您可以根据需要多次停止和启动服务,但构造函数将不再被调用,每次只会调用OnStart()方法。谁能证实一下?谢谢 最佳答案 不要使用构造函数执行应该在OnStart中的处理。使用OnStart处理服务的所有初始化。构造函数在应用程序的可执行文件运行时调用,而不是在服务运行时调用。可执行文件在OnStart之前运行。例如,当您继续时,不会再次调用构造函数,因为SCM已将对象保存在内存中

C#调用基类构造函数

publicCArm(Vector3at,stringname):base(name){}除了:base(name)之外,还有其他方法可以在括号内调用基础父构造函数吗?我不确定这是否是另一种语言,但我记得在构造函数中使用类似super();的方法来调用基类。谢谢。 最佳答案 不可以,您不能在C#中的构造函数体内调用基类构造函数。您可能正在考虑Java的语法。您可以通过调用方法来模拟所需的行为。只需确保在调用虚拟方法时非常小心! 关于C#调用基类构造函数,我们在StackOverflow上

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

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

c# - 在父构造函数中设置窗口所有者时遇到问题

在WPF中,在父级的构造函数中将窗口的Owner属性设置为其父级有什么问题吗?应该没有吧?那么,为什么我会从以下代码中得到一个XamlParseException?publicpartialclassMainView:Window{privatereadonlyOwnedWindowowned;publicMainView(){InitializeComponent();owned=newOwnedWindow();owned.DataContext=DataContext;varwindow=GetWindow(this);owned.Owner=this;//Settingtowi