草庐IT

abstract-class

全部标签

c# - 是否可以使用派生参数而不是基本参数来覆盖方法?

我陷入了这种情况:我有一个名为Ammo的抽象类,其中有AmmoBox和Clip作为子类。我有一个名为Weapon的抽象类,Firearm和Melee作为子类。Firearm是抽象的,ClipWeapon和ShellWeapon作为子项。在Firearm里面,有一个voidReload(Ammoammo);问题是,ClipWeapon可以同时使用Clip和AmmoBox来装弹:publicoverridevoidReload(Ammoammo){if(ammoisClip){SwapClips(ammoasClip);}elseif(ammoisAmmoBox){varammoBox=a

c# - 低级差异 : non-static class with static method vs. 静态类与静态方法

我想知道使用具有静态方法的非静态类与具有相同静态方法的静态类的一般好处(或缺点)是什么,除了我不能使用非静态类中的静态方法作为扩展方法。例如:classNonStaticClass{publicstaticstringGetData(){return"Thiswasinvokedfromanon-staticclass.";}}与此相比:staticclassStaticClass{publicstaticstringGetData(){return"Thiswasinvokedfromastaticclass.";}}使用一种方法优于另一种方法对性能/内存有何影响?注意:假设我不需要

c# - 使用 Assembly.GetType ("MyCompany.Class1.Class2") 返回 null

我正在尝试使用Assembly.GetType("MyCompany.Class1.Class2")从字符串中动态获取类型。Assembly.GetType("MyCompany.Class1");按预期工作。如果我将一个类嵌入到另一个类中,例如:namespaceMyCompany{publicclassClass1{//.....publicclassClass2{//.....}}}并尝试获取类型Class2Assembly.GetType("MyCompany.Class1.Class2")将返回一个空值。我正在使用.NETFrameworks3.5SP1有谁知道我做错了什么以

c# - C# 中的抽象类与静态类

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:What'sthedifferencebetweenanabstractclassandastaticone?你好我想知道C#中抽象类和静态类之间的所有区别是什么我什么时候使用什么以及为什么?抽象类真的是一个我们不能创建它的实例的类吗?谢谢

c# - 为什么这些是 "Special Classes"?

看完thisquestion问“特殊类”到底是什么,我剩下的问题是为什么这六个类System.Object、System.Array、System.Delegate、System.Enum和System.ValueType被选中并且hard-coded作为特殊类,防止它们被用作泛型类或方法的约束。很容易理解为什么System.Object在那里;所有类都继承System.Object,因此无需将其作为约束包含在内。我不清楚的是,为什么其他人被选为这个特殊类(class)类别的一部分。PS:当尝试将特殊类用作约束时,特殊类会引发编译错误CS0702。 最佳答案

c# - 我的控件是 "not allowed here because it does not extend class ' System.Web.UI.UserControl'”

所以我有另一个刮面器(无论如何对我来说)。我正在尝试在CMS中创建我自己的自定义控件,我只有部分源代码(即供应商提供给我的示例)。基本上,我创建了一个名为DataDefinitionContent的类,它扩展了ControlBase。现在,根据我从元数据中获得的信息,ControlBase扩展了UserControl,所以我原以为这不会发生什么戏剧性的事情。谁能阐明为什么这对我不起作用?我的类(class):publicpartialclassDataDefinitionContent:ControlBase,ICustomControl{...Stuff}控制库:usingSyste

c# - 内部抽象方法。为什么会有人拥有它们?

我今天正在做一些代码审查,发现了一些开发人员编写的旧代码。事情是这样的publicabstractclassBaseControl{internalabstractvoidDoSomething();}如果在同一个程序集中有一个派生类,它就可以工作publicclassDerivedControl:BaseControl{internaloverridevoidDoSomething(){}}但是在不同的程序集中派生基类会产生编译时错误DerivedControldoesnotimplementinheritedabstractmember'BaseControl.DoSomethin

c# - MVC 5 : Should I inherit my User from IdentityUser class?

我正在尝试学习Asp.NetIdentity和在这个tutorial,在Models\AppModels,cs部分创建EntityFramework代码优先ToDo模型MyUser类(class)继承自IdentityUser类和MyDbContext继承自IdentityDbContext类(class)。这是为什么?假设我有一个User包含我的Web应用程序用户的所有信息的类,该类是否应该继承自IdentityUser,我的DbContext是否应该继承?继承自IdentityDbContext?此外,从IdentityDbContext继承dbcontext类的优点是什么?平原D

c# - 定义不指定参数的抽象方法

我正在编写一个带有抽象方法的抽象类(因此,所有从它继承的类都必须实现该方法)。但是,我不想指定方法必须使用的参数,因为每个方法可能采用不同的参数或没有参数。只有名称和返回值应该相同。有没有办法在C#中执行此操作?感谢您的帮助! 最佳答案 不,这样做毫无意义。如果您没有声明参数,您将无法调用仅给出对基类的引用的方法。这就是抽象方法的意义所在:让调用者不必关心具体的实现,而是给他们一个API来使用。如果调用者需要知道确切的方法签名,那么您就将该调用者绑定(bind)到一个具体的实现,从而使抽象本质上无用。也许如果您可以提供更多细节,我们

c# - "Class of <T> where T : Enum"不工作

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:CreateGenericmethodconstrainingTtoanEnum为什么我们不能在C#中执行此操作?而且,如果可能的话,我怎样才能做类似的事情!我想要什么:publicclassATagwhereT:enum{[Somecode..]}publicclassclassBasewhereT:enum{publicIDictionarytags{get;set;}}因此,当需要调用它时,我很确定只会获得我的枚举值之一。publicclassAClassUsingTag:classBase{publi