我有一个扩展方法:
public static string ToDelimenatedString(this object[] array, string delaminator) {...}
扩展适用于引用类型,但不适用于值类型。我认为这是因为对象可以为空。我如何将上述方法编写为目标值类型,是否可以不为每种值类型写出来?
干杯,
富
答案 0 :(得分:3)
应该可以正常使用泛型: -
public static string ToDelimitedString<T>(this T[] array, string delimiter)
仅供参考,你可以[但可能不想]通过以下方式做出相反的约束,以限制不使用价值类型:
public static string ToDelimitedString<T>(this T[] array, string delimiter)
where T:class
顺便说一下,你可能也想支持IEnumerable,可能是这样的重载: -
public static string ToDelimitedString<T>(this IEnumerable<T> items, string delimiter)
{
return string.Join( delimiter, items.Select( item=>item.ToString()).ToArray());
}