如何覆盖[]数组中的ToString()?

时间:2013-11-02 20:50:00

标签: c# .net arrays override

说,如果我需要在自定义ToString中覆盖List方法,我会这样做:

public class WebUILanguage2 : List<WebUILanguage>
{
    public override string ToString()
    {
        return "Overridden message";
    }
}

但如果我想覆盖这个怎么办?

public class WebUILanguage2 : WebUILanguage[]

2 个答案:

答案 0 :(得分:7)

你做不到。您无法从数组类型派生。

我通常建议不要在ToString覆盖List<T> - 根据我的经验,通常最好使用合成而不是继承这样的事情。

答案 1 :(得分:-1)

如前所述,你不能那样做。但是,作为解决方法,您只需编写一个新的 方法:

using System;
static class Program {
   static string Str(this string[] a) => String.Join(',', a);
   static void Main() {
      string[] a = {"May", "June"};
      Console.WriteLine(a.Str());
   }
}

或功能:

using System;
class Program {
   static string Str(string[] a) => String.Join(',', a);
   static void Main() {
      string[] a = {"May", "June"};
      Console.WriteLine(Str(a));
   }
}

或通用函数:

using System.Collections.Generic;
using System;
class Program {
   static string Str(IEnumerable<string> a) => String.Join(',', a);
   static void Main() {
      string[] a = {"May", "June"};
      Console.WriteLine(Str(a));
   }
}