gpt4 book ai didi

c# - 方法的通用版本与接口(interface)版本

转载 作者:太空狗 更新时间:2023-10-29 20:59:00 26 4
gpt4 key购买 nike

这两种方法有什么区别?

首先:

public static int Foo<T>(T first, T second) where T:IComparable
{
return first.CompareTo(second)
}

第二个:

public static int Foo(IComparable first, IComparable second)
{
return first.CompareTo(second);
}

最佳答案

对于第一种方法,两个参数的类型必须相同,例如intint。该类型必须实现 IComparable 接口(interface)。

对于第二种方法,两个参数可以有不同的类型。两种类型都必须实现 IComparable 接口(interface),但不必相同,例如 intstring

请注意 IComparable.CompareTo method如果类型不相同,可能会抛出异常。所以最好确保类型实际上是相同的。您可以使用第一种方法来完成此操作,或者使用通用的 IComparable<T> interface 效果更好。 .


后续的问题当然是:这两种方式有什么区别?

首先:

public static int Foo<T1, T2>(T1 first, T2 second) where T1 : IComparable<T2>
{
return first.CompareTo(second);
}

第二个:

public static int Foo<T>(IComparable<T> first, T second)
{
return first.CompareTo(second)
}

答案:第一种方法不对第一个参数进行装箱,而第二种方法进行装箱。

关于c# - 方法的通用版本与接口(interface)版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14436942/

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