草庐IT

Overriding

全部标签

c# - 什么时候调用重写的方法中的base.Method(),团队写代码时如何标记?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭去年。Improvethisquestion当使用某些框架/api时,有时不清楚是否必须调用base.Method如果您覆盖它,例如,您可以非常确定在覆盖事件调用器时应该调用base.Maethod(),以便传播事件,在其他情况下可能不太清楚,尤其是在没有源代码可用且没有注释的情况下。我想知道其他程序员如何决定在这种情况下他们是否应该调用基方法,如果你要编写一些框架如何通知其他程序员你希望在虚拟成员中调用或不调用基方法。

c# - 如何覆盖而不是隐藏 C# 子类中的成员变量(字段)?

我想让它告诉我ItemA和ItemB的名称。它应该告诉我“Subitem\nSubitem”,但它告诉我“Item\nSubitem”。这是因为子项类中定义的“名称”变量在技术上与基项类中定义的“名称”变量不同。我想将原始变量更改为新值。我不明白为什么这不是最简单的事情,考虑到virtual和override与方法完美配合。我一直无法找出如何实际覆盖一个变量。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceExample{classProgram{staticv

c# - 如何覆盖而不是隐藏 C# 子类中的成员变量(字段)?

我想让它告诉我ItemA和ItemB的名称。它应该告诉我“Subitem\nSubitem”,但它告诉我“Item\nSubitem”。这是因为子项类中定义的“名称”变量在技术上与基项类中定义的“名称”变量不同。我想将原始变量更改为新值。我不明白为什么这不是最简单的事情,考虑到virtual和override与方法完美配合。我一直无法找出如何实际覆盖一个变量。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceExample{classProgram{staticv

c# - 如何在 C# 中覆盖属性的 setter 方法?

我有一个带有子类的类。父类(superclass)有一个Position属性。当Position属性更改时,子类必须执行额外的操作,因此我试图重写setter方法并调用父类(superclass)的setter。我想我已经了解了父类(superclass)setter调用部分,但我无法弄清楚这里的重写语法是如何工作的。这是我最好的尝试:setter/getter只是为了证明概念——假设我也想覆盖它?getter和setter给我这种形式的错误:cannotoverrideinheritedmember'superClassName.Position.[gs]et'becauseitis

c# - 如何在 C# 中覆盖属性的 setter 方法?

我有一个带有子类的类。父类(superclass)有一个Position属性。当Position属性更改时,子类必须执行额外的操作,因此我试图重写setter方法并调用父类(superclass)的setter。我想我已经了解了父类(superclass)setter调用部分,但我无法弄清楚这里的重写语法是如何工作的。这是我最好的尝试:setter/getter只是为了证明概念——假设我也想覆盖它?getter和setter给我这种形式的错误:cannotoverrideinheritedmember'superClassName.Position.[gs]et'becauseitis

C# 方法重写分辨率异常

考虑以下代码片段:usingSystem;classBase{publicvirtualvoidFoo(intx){Console.WriteLine("Base.Foo(int)");}}classDerived:Base{publicoverridevoidFoo(intx){Console.WriteLine("Derived.Foo(int)");}publicvoidFoo(objecto){Console.WriteLine("Derived.Foo(object)");}}publicclassProgram{publicstaticvoidMain(){Derivedd

C# 方法重写分辨率异常

考虑以下代码片段:usingSystem;classBase{publicvirtualvoidFoo(intx){Console.WriteLine("Base.Foo(int)");}}classDerived:Base{publicoverridevoidFoo(intx){Console.WriteLine("Derived.Foo(int)");}publicvoidFoo(objecto){Console.WriteLine("Derived.Foo(object)");}}publicclassProgram{publicstaticvoidMain(){Derivedd

c# - 方法覆盖和可选参数

有人愿意解释这段代码如何产生以下输出吗?usingSystem;namespaceConsoleApplication1{classTest{publicoverridestringToString(){return"ToStringoverride";}publicstringToString(stringoptional=""){returnString.Format("ToStringwithoptionalparameter{0}",optional);}}classTest2{publicnewstringToString(){return"ToStringnew";}pub

c# - 方法覆盖和可选参数

有人愿意解释这段代码如何产生以下输出吗?usingSystem;namespaceConsoleApplication1{classTest{publicoverridestringToString(){return"ToStringoverride";}publicstringToString(stringoptional=""){returnString.Format("ToStringwithoptionalparameter{0}",optional);}}classTest2{publicnewstringToString(){return"ToStringnew";}pub

c# - 覆盖 GetHashCode

这个问题在这里已经有了答案:WhatisthebestalgorithmforoverridingGetHashCode?(22个答案)关闭5年前。如您所知,GetHashCode返回一个半唯一值,可用于标识集合中的对象实例。作为一种好的做法,建议覆盖此方法并实现您自己的方法。我的问题是-您在处理自定义对象时是否会覆盖此方法?如果是这样,您使用什么算法来生成唯一ID?我正在考虑生成一个GUID,然后从该标识符中获取整数数据。