gpt4 book ai didi

c# - 这种通用继承是如何(内部)完成的?

转载 作者:行者123 更新时间:2023-11-30 22:49:28 24 4
gpt4 key购买 nike

你觉得下面的代码怎么样?这个好吗?如果是这样,为什么会这样?如果不是,为什么不是? CLR 如何看待这段代码?

public abstract class EntityBase<TEntity> : IEquatable<TEntity>
{
public bool Equals(TEntity other)
{
// check equalitiy
}

// yes, below is object's Equals and GetHashCode method implementation
}

public class Person : EntityBase<Person>
{
}

我对此有一些奇怪的感觉。就像先有鸡还是先有蛋的问题。这是具有相同行为的 .Net 框架代码。

public sealed class String : IComparable<string>, IEquatable<string> // I removed other interfaces

有什么想法吗?

最佳答案

在适当的情况下(例如实现 IComparable<T> )这是完全正确的做法。

但这只能根据具体情况来确定,查看考虑原因的详细信息。

另一方面,C++ 允许“奇怪的重复基本模式”:

template<typename T>
class SomeWrapper<T> : T { ... ]

泛型类继承它的泛型包装器。这允许一些高级包装方案,但如果在包装之外使用,会很快变得困惑。幸运的是(?)这种模式在 .NET 中是不允许的。

关于c# - 这种通用继承是如何(内部)完成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com