gpt4 book ai didi

c# - C# : operator '<' cannot be applied to operands of type 'T' and 'T' 中的比较

转载 作者:行者123 更新时间:2023-11-30 19:22:23 26 4
gpt4 key购买 nike

我创建了一个 BinaryTreeNode<T> 类,然后创建 Add(T data) 的方法 BinaryTree<T> 类。

当我尝试比较对象的值时,编译器说:

operator '<' cannot be applied to operands of type 'T' and 'T'.

例子:

  public void AddNode(T data) {
BinaryTreeNode<T> node = new BinaryTreeNode<T>(data);
BinaryTreeNode<T> temp = root;

if (temp.Value < node.Value) // **PROBLEM HERE**
...

我使用的是 VS08 快捷版。

最佳答案

你应该添加一个约束,使得 T 必须实现 IComparable<T>然后使用它:

public class BinaryTree<T> where T : IComparable<T>
{
public void AddNode(T data)
{
BinaryTreeNode<T> node = new BinaryTreeNode<T>(data);
BinaryTreeNode<T> temp = root;

if (temp.Value.CompareTo(node.Value) < 0)
...

另一种方法是传入一个 IComparer<T>并使用它:

public class BinaryTree<T> where T : IComparable<T>
{
private readonly IComparer<T> comparer;

public BinaryTree(IComparer<T> comparer)
{
this.comparer = comparer;
...
}

public void AddNode(T data)
{
BinaryTreeNode<T> node = new BinaryTreeNode<T>(data);
BinaryTreeNode<T> temp = root;

if (comparer.Compare(temp.Value, node.Value) < 0)

这是最接近保证“<”运算符的方法 - 重载运算符是静态的,并且无法限制类型参数以要求它。

关于c# - C# : operator '<' cannot be applied to operands of type 'T' and 'T' 中的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1308002/

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