gpt4 book ai didi

c# - 泛型约束有什么用?例如 : where T : IComparable

转载 作者:行者123 更新时间:2023-12-02 18:09:04 28 4
gpt4 key购买 nike

希望大家都好,我对约束有一些困惑,我还是不明白,使用约束有什么好处?

明天我确实了解了 Generics 。使用此方法是一个很棒的功能,我的意思是,它提供了最简单的使用方法,无需使用不同的数据类型一次又一次地创建方法,只需使用任何类型的数据类型即可调用它,

尤其是我确实理解了这些示例中的所有术语,

using System;

class Test<T>
{
private T _value;

public Test(T t)
{
this._value = t;
}

public void print()
{
Console.WriteLine("This is {0}", this._value);
}
}

class MyProgram
{
private static void Main(string[] args)
{
Test<int> test = new Test<int>(145);
test.print();

Test<string> test2 = new Test<string>("My name is ghost!");
test2.print();

Test<double> test3 = new Test<double>(458.5456);
test3.print();
}
}

但是当我深入了解 Generics constraints 时,我没有得到这个 What it is used for!你能用最简单的例子告诉我,使用这个有什么优点吗?

看到这个我很困惑:

public class MyGenericClass<T> where T:IComparable { }

where T:IComparable{} 是什么? IComparable 的定义是什么?

谢谢~

最佳答案

在没有约束的情况下,最低常见类型为Tobject 。如果你想用一组通用的类型做一些通用的事情,那几乎没有用处。通过允许约束,您可以将最低通用类型“拖动”到您指定为约束的类型。如果您输入的内容不符合约束,它还会阻止您使用通用代码。

IComparable会让你的代码调用CompareTo ,例如。

还有一些其他内置约束可用,与您的类型层次结构无关:

  • where T : class
  • where T : struct
  • where T : new()

您可以通过reviewing the documentation了解这些含义。 。

<小时/> IComparable只是 BCL 中可用的 .NET 框架接口(interface); documentation here :

Defines a generalized type-specific comparison method that a value type or class implements to order or sort its instances.

正如 Jeppe Stig Nielsen 所提到的,您应该使用 IComparable 的通用版本,是IComparable<T> ,关于您对各种其他好处的一般限制。

关于c# - 泛型约束有什么用?例如 : where T : IComparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24731916/

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