c# - 值类型的对象扩展方法

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

我有一个扩展方法:

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/

相关文章:

ios - Swift 数组下标索引中的错误?

javascript - 最快的 JavaScript 求和

C++ 多重继承,基类派生自同一个类

c++ - 在 C++ 中的合并排序中传递数组时出错

c++ - 无法匹配函数定义、模板

Javascript 闭包和继承

c# - 可以解释 PrepareConstrainedRegions 和 Thread.Abort 的这种意外行为吗?

c# - 如何在.net紧凑框架中播放mp3文件

c# - 从 ASMX 调用静态方法的陷阱

c# - 从 C# SelectList 中获取文本项