4

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

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

但是如果我想覆盖它怎么办?

public class WebUILanguage2 : WebUILanguage[]
4

2 回答 2

8

你不能。您不能从数组类型派生。

我通常也建议不要覆盖ToStringin List<T>——根据我的经验,对于这样的事情,通常使用组合比继承更好。

于 2013-11-02T20:52:07.677 回答
-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));
   }
}
于 2020-10-19T14:46:04.880 回答