繁体   English   中英

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

[英]How to override ToString() in [] array?

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

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

但是如果我想覆盖它呢?

public class WebUILanguage2 : WebUILanguage[]

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

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

如前所述,你不能那样做。 但作为一种解决方法,您可以简单地编写一个新方法:

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));
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM