草庐IT

Inheritance

全部标签

c# - "override"枚举的最佳方法是什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Enum“Inheritance”我有许多扩展抽象类的类。抽象父类定义了一个具有一组值的枚举。一些子类继承父类的枚举值,但一些子类需要枚举值不同。有什么方法可以以某种方式覆盖这些特定子类的枚举,如果没有,实现我所描述的内容的好方法是什么?classParentClass{privateMyEnumm_EnumVal;publicvirtualMyEnumEnumVal{get{returnm_EnumVal;}set{m_EnumVal=value;}}publicenumMyEnum{a,b,c};}cla

c# - 新的关键字和方法隐藏

new关键字用于隐藏相同的基类实现。但是我不确定为什么下面的代码会产生Baseclass的输出classBaseclass{publicvoidfun(){Console.Write("Baseclass"+"");}}classDerived1:Baseclass{newvoidfun(){Console.Write("Derived1class"+"");}}classDerived2:Derived1{newvoidfun(){Console.Write("Derived2class"+"");}}classProgram{publicstaticvoidMain(string[

c# - 将填充的 List<BaseClass> 转换为 List<ChildClass>

我有一个List里面有成员。我想将列表(及其所有成员)转换为类型List,其中ChildClass继承BaseClass.我知道我可以通过foreach获得相同的结果:ListChildClassList=newList();foreach(variteminBaseClassList){ChildClassList.Add(itemasChildClass);}但是有没有更简洁的方法呢?注意-这是在WP7平台上完成的。 最佳答案 如果你真的确定所有元素都是可类型转换的,你可以这样做:ChildClassList=BaseClass

c# - 构造函数和继承

让我们以C#为例publicclassFoo{publicFoo(){}publicFoo(intj){}}publicclassBar:Foo{}现在,除了构造函数之外,Foo的所有公共(public)成员都可以在Bar中访问。我不能做类似的事情Barbb=newBar(1);为什么构造函数不可继承?更新我知道我们可以链接构造函数,但我想知道为什么上述构造无效。我相信应该有一个正当的理由。 最佳答案 构造函数不可继承,因为它可能会导致奇怪和意外的行为。更具体地说,如果您向基类添加了一个新的构造函数,则所有派生类都会获得该构造函数的

c# - 为什么将两个字符串作为对象进行比较会导致意外结果

考虑以下代码。objectstr=newstring(newchar[]{'t','e','s','t'});objectstr1=newstring(newchar[]{'t','e','s','t'});Console.WriteLine(str==str1);//falseConsole.WriteLine(str.Equals(str1));//true我理解相等运算符在这里工作,因为我们已经隐式转换为对象,相等运算符正在检查两者的引用是否相等并返回false。但我对第二个感到困惑,返回true看起来它正在调用String类型提供的Equals覆盖实现,并且它检查字符串的内容是

c# - 了解 WPF 派生 WIndow 类

我确信这很简单,但对于使用C#的WPF来说,这对我来说是新的。我知道从类继承并且已经做过很多次,比如在C#WinForms项目中......publicclassMyClass:DerivedFromClass{}但是,在WPF中遇到困难,这就是问题所在。我想构建我自己的一组控件,用作新学习项目的基线……预设我自己的样式、颜色、背景和其他功能。没问题。首先从WPF窗口开始并创建“MyWindow”。现在,我想采用这个基线“MyWindow”并将其子类化为另一个类MySubClassedWindow。因此,我创建了一个新的Window类,默认情况下,VS2010构建了窗体的设计器和代码部

c# - 如何以任意序列搜索模式?

正则表达式仅适用于字符串,但如果该功能不仅可以扩展到字符,还可以扩展到对象,甚至进一步扩展到函数,那会怎样呢?假设我们的对象是整数,它们可以按任何顺序排列:12345678910111213你要解决的任务是像这样找到素数对(或类似的模式搜索任务):{prime}{anyNumber}{prime}所以答案是这样的:(3,4,5)(5,6,7)(11,12,13)或者更复杂的素数链示例:{prime}({anyNumber}{prime})+回答:(3,(4,5),(6,7))(11,(12,13))很像Regex的工作方式,对吧?发生的事情是你定义了一些名为isPrime(x)的函数,

C# 泛型通配符或如何保存对未知泛型继承的引用

好的,情况是这样的。我有一个FlexCollection类,其目的是保存FlexItem的一些专业列表,因此:publicclassFlexCollectionwhereT:FlexItem,new(){publicvoidAdd(Titem){...}...}FlexItem不是泛型类本身。我想要实现的是能够保持FlexItem的字段是对包含该对象的集合的引用。不幸的是,在C#中,不可能保留对模板类的“任何”特化的引用(如在Java中)。起初我尝试使用非通用接口(interface)IFlexCollection但它实际上迫使我对每个方法执行两次,即:publicclassFlexC

c# - 为什么我需要在泛型子类中重新声明类型约束

最近我尝试通过实现一个泛型接口(interface)来创建一个泛型子类。publicinterfaceIModulewhereT:DataBean{.....}publicclassModule:IModulewhereT:DataBean{....}看来我不能依赖在基本接口(interface)中定义的任何T限制,我需要自己重新申报。MSDN刚刚提供:Whenusingthesubclassgenerictypeparameters,youmustrepeatanyconstraintsstipulatedatthebaseclasslevelatthesubclasslevel.F

c# - C# 8 默认接口(interface)实现是否允许多重继承

根据https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/,C#8中的一项新功能是接口(interface)的默认实现。这个新特性是否也隐含地允许多重继承?如果不是,如果我尝试以下操作,究竟会发生什么:publicinterfaceA{intFoo()=>1;}publicinterfaceB{intFoo()=>2;}publicclassC:A,B{} 最佳答案 MadsTorgersen在您链接到的博客文章中回答了您的问题:Actuallyinter