gpt4 book ai didi

c# - 通用函数错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:50 25 4
gpt4 key购买 nike

我正在尝试使用泛型编写简单的 C# 函数。例如数组解析器。

public static int parse_array <T> ( string str, ref T[] array ) 
where T : IConvertible<T>
{
string[] vals=str.Split(new char[]{'','\t',',',';'}, StringSplitOptions.RemoveEmptyEntries);

if( vals==null || vals.Length==0 )
return 0;

array = new T[vals.Length];

for( int i=0; i<vals.Length; i++ )
{
array[i] = Convert.ChangeType ( vals[i], T );
}

return vals.Length;
}

但我收到错误:非泛型类型“System.IConvertable”不能与类型参数一起使用。怎么了?

最佳答案

您的特定编译器错误的问题是 IConvertible不是通用接口(interface),您的子句应该是:

where T : IConvertible

不是

where T : IConvertible<T>

事实上,编译器错误告诉您您正在尝试将类型参数(即 <T> )放在非泛型类型(即接口(interface) IConvertible )上。虽然一些接口(interface)是通用的或具有通用并行,IConvertible不是其中之一。

然后,此外,您还需要使用 typeof(T)而不是 T在您调用 ChangeType 的电话中, 自 T是类型名称而不是 Type 的实例正如克里斯提到的...

关于c# - 通用函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062238/

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