gpt4 book ai didi

C# Generic ToString Join if Array or IEnumerable

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

我有一个具有字符串方法的泛型。如果泛型的类型是容器(数组、IEnumerable 等),它们的值应该用逗号分隔。

public class Test<T>
{
public T GenericProperty { get; set; }

public override string ToString()
{
string ret;
if (GenericProperty is Array || GenericProperty is IEnumerable)
{
ret = String.Join(",", GenericProperty);
}
else
{
ret = GenericProperty.ToString();
}
return ret;
}
}

我想通过向它添加一个 linq 表达式 (Select(x => x.ToString()) 来测试它,但是 linq 不可用。

当我调试上面的代码时,if 子句被正确执行。但结果我只得到“System.Int32[]”。

我怎样才能做到这一点?

最佳答案

您实际上使用的是 String.Join带字符串和 params object[] 的重载作为参数。

您需要将 GenericProperty 转换为 IEnumerable<T> .

public class Test<T>
{
public T GenericProperty { get; set; }

public override string ToString()
{
string ret;
if ( GenericProperty is IEnumerable)
{
IEnumerable en = GenericProperty as IEnumerable;
ret = String.Join(",", en.Cast<object>());

}
else
{
ret = GenericProperty.ToString();
}
return ret;
}
}

关于C# Generic ToString Join if Array or IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951954/

25 4 0