是否有任何方法导致父版本的重新定义方法? /C# .Chistaya./
在下面的代码中,我尝试了两种方法来访问父版本。 methodTwo, 但结果总是 2. 有没有办法来获得结果 1 从另一个 ChildClass 不改变这两个课程?
Update
ChrisW 发布了这一点:
外面的课外我不知道
没有简单的方式; 但也许我没有
知道如果你尝试会发生什么
反思:使用
方法 Type.GetMethod, 找到 MethodInfo,
与类方法相关联。
ParentClass, 然后打电话
MethodInfo.Invoke
这个答案被删除了。 我想知道这个黑客可以工作,只是出于好奇心。
class ParentClass
{
public int methodOne//
{
return methodTwo//;
}
virtual public int methodTwo//
{
return 1;
}
}
class ChildClass : ParentClass
{
override public int methodTwo//
{
return 2;
}
}
class Program
{
static void Main/string[] args/
{
var a = new ChildClass//;
Console.WriteLine/"a.methodOne//: " + a.methodOne///;
Console.WriteLine/"a.methodTwo//: " + a.methodTwo///;
Console.WriteLine/"//ParentClass/a/.methodTwo//: "
+ //ParentClass/a/.methodTwo///;
Console.ReadLine//;
}
}
Update
ChrisW 发布了这一点:
外面的课外我不知道
没有简单的方式; 但也许我没有
知道如果你尝试会发生什么
反思:使用
方法 Type.GetMethod, 找到 MethodInfo,
与类方法相关联。
ParentClass, 然后打电话
MethodInfo.Invoke
这个答案被删除了。 我想知道这个黑客可以工作,只是出于好奇心。
没有找到相关结果
已邀请:
8 个回复
风见雨下
赞同来自:
你可以打电话
.
在挑战之外
原因
. 这是存在虚拟方法的完整原因。
奔跑吧少年
赞同来自:
, 但不是
, 并执行你的工作 - 但如果我们限制自己 C# ; - p /
edit
darn! 执行时间阻止您:
: "操作可以稳定执行时间"; 消除
, 它可以很好; 太聪明了....../
内部类型
您可以使用
- 外面是不可能的。 您也不能下降超过一个级别 - 没有支持
.
但是,如果使用隐藏方法断开多态性,则可以获得所需的
回答
, 但原因不好:
现在您可以根据变量是否定义为相同的对象来获得另一个答案
或者
.
八刀丁二
赞同来自:
供参考和完整的样本,见
http://kennethxu.blogspot.cz/2 ... .html
谢谢,肯尼斯徐!
奔跑吧少年
赞同来自:
可能展示
的
自行使用或外部使用。 在您的情况下:
在我的情况下,子类引入了对等节点的概念,我需要它重新定义
, 调用对等节点上的基本版本。 然而,拒绝他,他隐藏了它......还是这样做了? 这种技术来到了救援。
小姐请别说爱
赞同来自:
上面的代码成功覆盖了父方法,但父方法的值保持不变。
您可以从中返回值
父母类
, 所以
夏季班级
, 使用下面的代码 -
但 Visual Studio 在汇编期间向您展示警告。
知食
赞同来自:
喜特乐
赞同来自:
这是继承的本质,多态性......
冰洋
赞同来自:
在课堂上放置有关的功能 ancestor, 在具有必要参数的静态方法中。 此类中的方法可能导致它,因此它不需要重复功能,如果通过静态方法必要,则子类可能导致此功能。 因此,即使在方法内也可以进行,并指出他想要呼叫哪个特定的课程。 此外,它还可以访问比父母更遥远的祖先,这是限制使用 "base".