值类型的对象扩展方法

时间:2009-08-26 09:52:17

标签: c# arrays inheritance extension-methods value-type

我有一个扩展方法:

public static string ToDelimenatedString(this object[] array, string delaminator) {...}

扩展适用于引用类型,但不适用于值类型。我认为这是因为对象可以为空。我如何将上述方法编写为目标值类型,是否可以不为每种值类型写出来?

干杯,

1 个答案:

答案 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());
}