c#.net覆盖多维数组的ToString

时间:2016-05-25 15:00:42

标签: c# multidimensional-array visual-studio-2015

我有一个主要为其调用者提供2d数组的类(解析文件后)。它返回这个数组很好,但我需要为该调用者提供一种方法,将该2d数组转换为多分隔字符串。下面的伪代码。

完全披露:我的大部分时间都是在其他软件中编写脚本,所以我在OOP中有点生疏,特别是在c#

我希望来电者能够:

string[,] results;
getArray (arg1, arg2, etc, out results);
Debug.WriteLine(results.ToString(delim1, delim2));

但是我不清楚如何为ToString()创建这个覆盖,例如:

public override string[,] ToString(string rowSeparator, string columnSeparator)
{
    string retVal = "";
    for(int r = 0; r < this.getUpperBound(0); r ++)
    {
        for (int c = 0; c < this.getUpperBound(1); c++)
        {
            retVal += this[r,c];
            if (c + 1 < this.getUpperBound(1)) 
            {
                retVal += columnSeparator;
            }
        }
        if (r + 1 < this.getUpperBound(0))
        {
            retVal += rowSeparator;
        }
    }
    return retVal;
}

1 个答案:

答案 0 :(得分:5)

这不是覆盖任何内容 - 您正在尝试重载现有的ul方法。这是一个很好的工作,你不是要覆盖任何东西,因为你基本上不能这样做 - 你只能覆盖类声明中的成员,你不能自己声明ToString类。

您可以使用extension method

来实现目标
string[,]

请注意,调用者需要为包含public static class ArrayExtensions { public static string ToString( this string[,] array, string rowSeparator, string columnSeparator) { // Code as per your method, but using array instead of this } } 的命名空间指定using指令,或为ArrayExtensions类本身指定using static指令才能使用此指令作为一种延伸方法。

我还建议您在实施中使用ArrayExtensions而不是repeated string concatenation