gpt4 book ai didi

c# - 泛型 C# 中的无限类型参数

转载 作者:行者123 更新时间:2023-11-30 20:41:02 27 4
gpt4 key购买 nike

我是泛型的新手 我从 MSDN Library 开始学习泛型

我无法理解以下关于无限类型参数的几点。

Type parameters that have no constraints, such as T in public class SampleClass<T>{}, are called unbounded type parameters. Unbounded type parameters have the following rules:

  • The != and == operators cannot be used because there is no guarantee that the concrete type argument will support these operators.
  • You can compare to null. If an unbounded parameter is compared to null, the comparison will always return false if the type argument is a value type.

我没有找到以上几点的任何例子。如果有人给我举例来理解这些要点,那就太好了。

注意:我的问题是关于 != 的使用和 ==运算符...为什么我们不能在无限类型中使用这些运算符以及为什么总是返回 false如果 Unbounded 参数与 null 进行比较

最佳答案

让我们暂时假设这是可能的:

public class C
{
public bool AreEqual<T>(T first, T second)
{
return first == second;
}
}

现在假设一个名为 F 的 struct,它没有实现 == 运算符(默认情况下没有 struct 有)。这里应该发生什么?

F first = new F();
F second = new F();
var c = new C();
Console.WriteLine(c.AreEqual(first, second));

值类型没有 == 的实现,我们不能遵从 Object.ReferenceEquals,因为这又是一个值类型。这就是编译器不允许您这样做的原因。

关于c# - 泛型 C# 中的无限类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671363/

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