草庐IT

c# - 调用基类的方法

在c++中我会做classA{public:virtualvoidstuff(){//something}};classB:publicApublic:virtualvoidstuff(){//something2A::stuff()//something}};我如何在C#中执行此操作?我试过了publicvoidstuff(){//something2A.stuff();//something}但这行不通 最佳答案 base是在C#中引用父类(superclass)的关键字。使用:base.stuff();

c# - 从 C# 中的基类获取派生类型?

假设我们有这两个类:publicclassDerived:Base{publicDerived(strings):base(s){}}publicclassBase{protectedBase(strings){}}如何从Base的构造函数中找出Derived是调用者?这是我想出的:publicclassDerived:Base{publicDerived(strings):base(typeof(Derived),s){}}publicclassBase{protectedBase(Typetype,strings){}}是否有另一种不需要传递typeof(Derived)的方法,例

c# - 来自基类的用户定义转换运算符

简介我知道“不允许用户定义的与基类之间的转换”。作为对此规则的解释,MSDN给出了“您不需要此运算符”。我明白不需要用户定义的到基类的转换,因为这显然是隐式完成的。但是,我确实需要从基类进行转换。在我当前的设计中,一个非托管代码的包装器,我使用一个指针,存储在一个实体类中。所有使用指针的类都派生自该实体类,例如Body类。因此我有:方法AclassEntity{IntPtrPointer;Entity(IntPtrpointer){this.Pointer=pointer;}}classBody:Entity{Body(IntPtrpointer):base(pointer){}exp

c# - 是否可以使用显式类型转换将基类对象分配给派生类引用?

是否可以在C#中使用显式类型转换将基类对象分配给派生类引用?我试过了,它会产生运行时错误。 最佳答案 没有。对派生类的引用实际上必须引用派生类的实例(或null)。否则你会如何期望它的行为?例如:objecto=newobject();strings=(string)o;inti=s.Length;//Whatcanthissensiblydo?如果您希望能够将基类型的实例转换为派生类型,我建议您编写一个方法来创建合适的派生类型实例。或者再次查看您的继承树并尝试重新设计,以便您一开始就不需要这样做。

c# - 使用带参数的基类构造函数继承

这个问题在这里已经有了答案:C#inheritanceanddefaultconstructors(4个答案)关闭7年前。简单代码:classfoo{privateinta;privateintb;publicfoo(intx,inty){a=x;b=y;}}classbar:foo{privateintc;publicbar(inta,intb)=>c=a*b;}VisualStudio提示bar构造函数:ErrorCS7036Thereisnoargumentgiventhatcorrespondstotherequiredformalparameterxoffoo.foo(int

c# - 会自动调用基类构造函数吗?

classPerson{publicintage;publicPerson(){age=1;}}classCustomer:Person{publicCustomer(){age+=1;}}Customercustomer=newCustomer();顾客的年龄是2岁吗?似乎无论如何都会调用基类的构造函数。如果是这样,为什么我们有时需要在最后调用base?publicCustomer():base(){.............} 最佳答案 这就是C#的工作方式。类型层次结构中每个类型的构造函数将按照最基础->最派生的顺序调用。因此

c# - 从通用基类继承,应用约束,并在 C# 中实现接口(interface)

这是一道语法题。我有一个泛型类,它继承自泛型基类,并将约束应用于其中一个类型参数。我还希望派生类实现一个接口(interface)。对于我的生活,我似乎无法找出正确的语法。这是我的:DerivedFoo:ParentFoowhereT2:IBar{...}首先想到的是:DerivedFoo:ParentFoowhereT2:IBar,IFoo{...}但这是不正确的,因为这会导致T2需要同时实现IBar和IFoo,而不是DerivedFoo来实现IFoo。我已经尝试了一些谷歌搜索,使用冒号、分号等,但我都没有找到。我敢肯定答案非常简单。 最佳答案

php - 不可测试的基类扩展 PHPUnit_Framework_TestCase

总结我如何创建一个扩展PHPUnit_Framework_TestCase的基类并将其用于子类化实际测试用例,而不用PHPUnit测试基类本身?进一步说明我有一系列相关的测试用例,为此我创建了一个基类,其中包含一些将被所有测试用例继承的通用测试:BaseClass_TestCase.php:classBaseClass_TestCaseextendsPHPUnit_Framework_TestCase {functiontest_common(){//Testthatshouldberunforallderivedtestcases}}MyTestCase1Test.php:inclu

c++ - protected 继承是否允许派生类访问其基类的私有(private)成员?

我真的对私有(private)继承和protected继承感到困惑。1)在protected继承中,公共(public)成员和protected成员成为派生类中的protected成员。在私有(private)继承中,一切都是私有(private)的。但是,派生类永远不能访问基类的私有(private)成员,对吗?在这两种情况下,派生类都可以访问公共(public)成员和protected成员。那正确吗?2)我注意到基类的私有(private)成员永远不会被派生类触及。那么为什么私有(private)成员会被继承呢? 最佳答案 您在

c++ - 指向虚拟成员函数的指针在基类的构造函数中是否有效?

我的问题不是关于从基类构造函数调用虚成员函数,而是关于虚成员函数的指针在基类构造函数中是否有效。鉴于以下classA{void(A::*m_pMember)();public:A():m_pMember(&A::vmember){}virtualvoidvmember(){printf("InA::vmember()\n");}voidtest(){(this->*m_pMember)();}};classB:publicA{public:virtualvoidvmember(){printf("InB::vmember()\n");}};intmain(){Bb;b.test();r