草庐IT

Overriding

全部标签

c# - 覆盖与方法隐藏

这个问题在这里已经有了答案:DifferencebetweenshadowingandoverridinginC#?(6个答案)关闭3年前。我对在C#中覆盖和隐藏方法有点困惑。每个人的实际用途,以及对何时使用每个人的解释,我们也将不胜感激。我对覆盖感到困惑-我们为什么要覆盖?到目前为止,我了解到的是,通过重写,我们可以在不更改签名的情况下为派生类的方法提供所需的实现。如果我不重写父类(superclass)的方法,而是对子类中的方法进行更改,是否会更改父类(superclass)的方法?我也对以下内容感到困惑-这说明了什么?classA{virtualm1(){console.writ

c# - 覆盖可变对象的 GetHashCode?

我已经阅读了大约10个关于何时以及如何重写GetHashCode的不同问题,但仍有一些我不太明白。GetHashCode的大多数实现都基于对象字段的哈希码,但有人指出,GetHashCode的值在对象的整个生命周期内都不应更改。如果它所基于的字段是可变的,那将如何工作?另外,如果我确实希望字典查找等基于引用相等性而不是我覆盖的Equals怎么办?我主要覆盖Equals以便于对我的序列化代码进行单元测试,我假设序列化和反序列化(在我的情况下为XML)会破坏引用相等性,所以我想至少确保值(value)平等是正确的。在这种情况下重写Equals是一种不好的做法吗?基本上在大多数执行代码中,我

c# - 覆盖可变对象的 GetHashCode?

我已经阅读了大约10个关于何时以及如何重写GetHashCode的不同问题,但仍有一些我不太明白。GetHashCode的大多数实现都基于对象字段的哈希码,但有人指出,GetHashCode的值在对象的整个生命周期内都不应更改。如果它所基于的字段是可变的,那将如何工作?另外,如果我确实希望字典查找等基于引用相等性而不是我覆盖的Equals怎么办?我主要覆盖Equals以便于对我的序列化代码进行单元测试,我假设序列化和反序列化(在我的情况下为XML)会破坏引用相等性,所以我想至少确保值(value)平等是正确的。在这种情况下重写Equals是一种不好的做法吗?基本上在大多数执行代码中,我

c# - 在 C# 中有什么方法可以用扩展方法覆盖类方法吗?

有时我想用扩展方法覆盖类中的方法。在C#中有什么方法可以做到这一点吗?例如:publicstaticclassStringExtension{publicstaticintGetHashCode(thisstringinStr){returnMyHash(inStr);}}我想要这样做的一个案例是能够将字符串的散列存储到数据库中,并让所有使用该字符串类散列的类(即字典等)使用相同的值。)由于内置的​​.NET哈希算法不能保证从一个版本的框架兼容到下一个版本,我想用我自己的替换它。在其他情况下,我也想用扩展方法覆盖类方法,因此它不仅特定于字符串类或GetHashCode方法。我知道我可以

c# - 在 C# 中有什么方法可以用扩展方法覆盖类方法吗?

有时我想用扩展方法覆盖类中的方法。在C#中有什么方法可以做到这一点吗?例如:publicstaticclassStringExtension{publicstaticintGetHashCode(thisstringinStr){returnMyHash(inStr);}}我想要这样做的一个案例是能够将字符串的散列存储到数据库中,并让所有使用该字符串类散列的类(即字典等)使用相同的值。)由于内置的​​.NET哈希算法不能保证从一个版本的框架兼容到下一个版本,我想用我自己的替换它。在其他情况下,我也想用扩展方法覆盖类方法,因此它不仅特定于字符串类或GetHashCode方法。我知道我可以

c# - 为什么重写 Equals 方法时重写 GetHashCode 很重要?

给定以下类(class)publicclassFoo{publicintFooId{get;set;}publicstringFooName{get;set;}publicoverrideboolEquals(objectobj){FoofooItem=objasFoo;if(fooItem==null){returnfalse;}returnfooItem.FooId==this.FooId;}publicoverrideintGetHashCode(){//Whichispreferred?returnbase.GetHashCode();//returnthis.FooId.Ge

c# - 为什么重写 Equals 方法时重写 GetHashCode 很重要?

给定以下类(class)publicclassFoo{publicintFooId{get;set;}publicstringFooName{get;set;}publicoverrideboolEquals(objectobj){FoofooItem=objasFoo;if(fooItem==null){returnfalse;}returnfooItem.FooId==this.FooId;}publicoverrideintGetHashCode(){//Whichispreferred?returnbase.GetHashCode();//returnthis.FooId.Ge

javascript - TypeScript 覆盖 ToString()

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭3年前。此帖于11个月前编辑提交审核,未能重开帖子:原始关闭原因未解决Improvethisquestion假设我有一个类Person,如下所示:classPerson{constructor(publicfirstName:string,publiclastName:string,publicage:number){}}我已经重写了toStr

javascript - TypeScript 覆盖 ToString()

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭3年前。此帖于11个月前编辑提交审核,未能重开帖子:原始关闭原因未解决Improvethisquestion假设我有一个类Person,如下所示:classPerson{constructor(publicfirstName:string,publiclastName:string,publicage:number){}}我已经重写了toStr

JavaScript 覆盖方法

假设您有以下代码:functionA(){functionmodify(){x=300;y=400;}varc=newC();}functionB(){functionmodify(){x=3000;y=4000;}varc=newC();}C=function(){varx=10;vary=20;functionmodify(){x=30;y=40;};modify();alert("Thesumis:"+(x+y));}现在的问题是,是否有任何方法可以使用A中的方法覆盖C中的方法modify>和B。在Java中,您会使用super关键字,但如何在JavaScript中实现类似的功能