我有一个扩展方法:
public static string ToDelimenatedString(this object[] array, string delaminator) {...}
扩展适用于引用类型,但不适用于值类型。我认为这是因为对象可以为空。我如何将上面的方法编写为目标值类型,是否可以不为每个值类型编写它?
干杯,
丰富
最佳答案
应该可以与泛型一起正常工作:-
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());
}
关于c# - 值类型的对象扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1333554/