c#in Cutshell
关闭类型时类型可以将自己称为混凝土类型 参数
public interface IEquatable<T> { bool Equals (T obj); } public class Balloon : IEquatable<Balloon> { public string Color { get; set; } public int CC { get; set; } public bool Equals (Balloon b) { if (b == null) return false; return b.Color == Color && b.CC == CC; } }
以下也是合法的:
class Foo<T> where T : IComparable<T> { ... } class Bar<T> where T : Bar<T> { ... }
关闭类型参数时"一种类型可以将自己称为具体类型"的意思是什么?您能显示示例中的位置吗?
"混凝土类型"one_answers"关闭类型参数"是什么意思?
在示例中,没有通用类型的实例化,那么"类型参数"one_answers"混凝土类型"在哪里?
谢谢。
类Balloon
是具体类型。您可以使用它来创建Balloon
类型对象的实例:
var balloon = new Balloon
{
CC = 1;
Color = "Blue"
};
另一方面,IEquatable<T>
是一个通用接口。每当类型实现此接口时,T
都会被这种类型替换。
因此,如果您要使用自定义类型Balloon
来实现此接口,则只需首先声明此类将其实现如下:
public class Balloon : IEquatable<Balloon>
和班级内部您必须实现方法Equals
。
请注意,由于此方法的签名为以下:
bool Equals (T obj);
您必须对此进行更改:
bool Equals(Balloon obj)
从现在开始,Balloon
是您的混凝土类型。