Kei*_*ith 2 c# multidimensional-array visual-studio-2015
我有一个主要为其调用者提供2d数组的类(解析文件后).它返回这个数组很好,但我需要为该调用者提供一种方法将该2d数组转换为多分隔字符串.下面的伪代码.
完全披露:我的大部分时间都是在其他软件中编写脚本,所以我在OOP中有点生疏,特别是在c#中
我希望调用者能够:
string[,] results;
getArray (arg1, arg2, etc, out results);
Debug.WriteLine(results.ToString(delim1, delim2));
Run Code Online (Sandbox Code Playgroud)
但我不清楚如何为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;
}
Run Code Online (Sandbox Code Playgroud)
这不是重写任何事情 - 你试图重载现有的ToString方法.这是一个很好的工作,你不是要试图覆盖任何东西,因为你基本上不能这样做 - 你只能覆盖类声明中的成员,你不能自己声明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
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,调用者需要具有using包含命名空间ArrayExtensions的using static指令或ArrayExtensions类本身的指令,以便将其用作扩展方法.
我还建议StringBuilder在您的实现中使用而不是重复的字符串连接.
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |