假设我有一个接口(interface)和两个类,其中一个类实现了这个接口(interface):interfaceIAAA{intF1{get;set;}}classAAA1{publicintF1{get;set;}publicintF2{get;set;}}classAAA2:IAAA{publicintF1{get;set;}publicintF2{get;set;}}在AAA2类中,属性F1是从接口(interface)IAAA“继承”(我不确定),然后我使用反射来检查一个属性是否是虚拟的:Console.WriteLine("AAA1whichdoesnotimplement
C#是否有私有(private)/保护继承的概念,如果没有,为什么?C++classFoo:privateBar{public:...};C#publicabstractNServletclass:privateSystem.Web.UI.Page{//error"typeexpected"}我正在.aspx页面中实现“类似servlet”的概念,我不希望具体类能够查看System.Web.UI.Page基础的内部结构。 最佳答案 C#只允许公共(public)继承。C++允许所有三种类型。公共(public)继承暗示了一种“IS-
C#是否有私有(private)/保护继承的概念,如果没有,为什么?C++classFoo:privateBar{public:...};C#publicabstractNServletclass:privateSystem.Web.UI.Page{//error"typeexpected"}我正在.aspx页面中实现“类似servlet”的概念,我不希望具体类能够查看System.Web.UI.Page基础的内部结构。 最佳答案 C#只允许公共(public)继承。C++允许所有三种类型。公共(public)继承暗示了一种“IS-
假设有一个基类A和一个从A派生的类B。然后,我们知道A类的构造函数永远不会被B类继承。但是,当B的新对象被创建时,类A的默认构造函数在类B被调用。也许这样做的目的是类A的字段需要初始化为默认值。现在,假设类A定义了一个自定义构造函数。这意味着A类的默认构造函数被编译器静默删除。现在,在创建类B的新实例时,在调用类B的构造函数之前会自动调用类A的哪个构造函数?(在这种情况下,类A字段如何初始化?) 最佳答案 Now,oncreatinganewinstanceofclassB,whichconstructorofclassAisaut
假设有一个基类A和一个从A派生的类B。然后,我们知道A类的构造函数永远不会被B类继承。但是,当B的新对象被创建时,类A的默认构造函数在类B被调用。也许这样做的目的是类A的字段需要初始化为默认值。现在,假设类A定义了一个自定义构造函数。这意味着A类的默认构造函数被编译器静默删除。现在,在创建类B的新实例时,在调用类B的构造函数之前会自动调用类A的哪个构造函数?(在这种情况下,类A字段如何初始化?) 最佳答案 Now,oncreatinganewinstanceofclassB,whichconstructorofclassAisaut
如果我有以下代码示例:publicclassClassBase{publicintID{get;set;}publicstringName{get;set;}}publicclassClassA:ClassBase{publicintJustNumber{get;set;}publicClassA(){this.ID=0;this.Name=string.Empty;this.JustNumber=string.Empty;}}如何在不修改ClassBase的情况下隐藏属性Name(不显示为ClassA成员的成员)? 最佳答案 我在
如果我有以下代码示例:publicclassClassBase{publicintID{get;set;}publicstringName{get;set;}}publicclassClassA:ClassBase{publicintJustNumber{get;set;}publicClassA(){this.ID=0;this.Name=string.Empty;this.JustNumber=string.Empty;}}如何在不修改ClassBase的情况下隐藏属性Name(不显示为ClassA成员的成员)? 最佳答案 我在
我有一个基类和一个继承基类的类。基类有几个虚函数,继承类可以覆盖这些虚函数。但是,基类中的虚函数具有必须在调用继承类覆盖之前运行的代码。有什么方法可以先调用基类虚函数,然后继承类覆盖。不调用base.function()。我知道我可以简单地创建两个函数,一个被调用,另一个被调用。但是有没有办法让我也保留相同的名字?我知道我可能需要改变一些事情。classmyBase{publicvirtualmyFunction(){/*must-runcode,Calledfirst*/}}classmyInherited:myBase{publicoverridemyFunction(){/*do
我有一个基类和一个继承基类的类。基类有几个虚函数,继承类可以覆盖这些虚函数。但是,基类中的虚函数具有必须在调用继承类覆盖之前运行的代码。有什么方法可以先调用基类虚函数,然后继承类覆盖。不调用base.function()。我知道我可以简单地创建两个函数,一个被调用,另一个被调用。但是有没有办法让我也保留相同的名字?我知道我可能需要改变一些事情。classmyBase{publicvirtualmyFunction(){/*must-runcode,Calledfirst*/}}classmyInherited:myBase{publicoverridemyFunction(){/*do
这是一个远景,但我有一个有趣的编码情况,我希望能够即时创建匿名类,但能够将它们作为参数传递给需要接口(interface)或子类的方法。换句话说,我希望能够做这样的事情:publicclassMyBase{...}publicvoidFoo(MyBasesomething){...}...varq=db.SomeTable.Select(t=>new:MyBase//yeah,IknowIcan'tdothis...{t.Field1,t.Field2,});foreach(variteminq)Foo(item);除了使用命名类之外,还有什么方法可以做到这一点吗?