【发布时间】:2011-04-27 02:17:24
【问题描述】:
我正在学习编写自己的界面,并偶然发现了 MSDN 文章“Interfaces (C# Programming Guide)”。一切似乎都很好,除了:
interface IEquatable<T>
{
bool Equals(T obj);
}
【问题讨论】:
-
T代表Type,表示它是一个Generic接口,可以支持多种类型。
我正在学习编写自己的界面,并偶然发现了 MSDN 文章“Interfaces (C# Programming Guide)”。一切似乎都很好,除了:
interface IEquatable<T>
{
bool Equals(T obj);
}
【问题讨论】:
表示是generic接口。
你可以创建一个这样的界面:
public interface IMyInterface<T>
{
T TheThing {get; set;}
}
您可以通过多种方式实现它:
public class MyStringClass : IMyInterface<string>
{
public string TheThing {get; set;}
}
像这样:
public class MyIntClass : IMyInterface<int>
{
public int TheThing {get; set;}
}
【讨论】:
T 只是一个命名约定,因为通用参数名称引用了 _T_ype。您可以或多或少地命名它,但由于命名接口以 I 开头是一种约定,因此它也是命名以 T 开头的泛型类型参数的约定。在上面的示例中,它也可以具有被命名为TTheThing 或类似的东西。
它是一个参数类型意味着您可以将 IEquatable 用于任何类型...在“运行时”(但不完全是),您可以使用 String、Animal、Dog ecc 代替 T...
【讨论】: