因此,我正在编写一个简单的结构来充当字符串数组,但具有一些方便的运算符和其他我一直希望在字符串中看到的函数。具体来说,我现在正在使用的方法是 / 运算符。问题是,它不会像我想要的那样在最后添加任何余数。
它应该做的是获取一个字符串数组,例如{"Hello", "Test1", "Test2", "Goodbye", "More?", "Qwerty"}
,假设我想除以 4,它应该返回{ {"Hello", "Test1", "Test2", "Goodbye"}, {"More?", "Qwerty"} }
但它没有返回。
全班(我想改进的方法是 / 运算符,但如果您看到我可以做的其他事情,请指出)(我知道几乎没有任何评论。对不起,没想到还有其他人除了我之外,还可以查看此代码。):
public struct StringCollection
{
private String[] value;
public StringCollection(params String[] s)
{
this.value = s;
}
public StringCollection(StringCollection current, String ad)
{
if (current.value == null) {
current.value = new String[0] { };
}
this.value = new String[current.value.Length+1];
for (int i=0; i<this.value.Length; i++)
{
try {
this.value[i] = current[i];
} catch {
break;
}
}
this.value[this.value.Length-1] = ad;
}
public StringCollection(StringCollection x, params StringCollection[] y)
{
this.value = x.value;
for (int j=0;j<y.Length;j++)
{
for (int i=0;i<y[j].value.Length;i++)
{
this += y[j][i];
}
}
}
public static StringCollection[] operator /(StringCollection x, int y)
{
StringCollection[] result = null;
if (((int)x.value.Length/y) == ((double)x.value.Length)/y)
result = new StringCollection[y];
else
result = new StringCollection[y+1];
for (int j=0;j<y;j++)
{
for (int i=0;i<((int)x.value.Length/y);i++)
{
result[j] += x.value[i+(int)((x.value.Length/y)*j)];
}
}
if (((int)x.value.Length/y) != ((double)x.value.Length)/y)
{
// This is the part that isn't working.
for (int i=0;i<(((int)x.value.Length/y)*result[0].value.Length)-x.value.Length;i++)
{
result[result.Length-1] += x.value[i+((result[0].value.Length)*result.Length-2)];
}
}
return result;
}
public String this[int index]
{
get {
return this.value[index];
}
set {
this.value[index] = value;
}
}
}
它所做的基本上是获取您的数组(单个数组)并将其拆分为一堆大小相同的数组,然后在最后将剩余部分添加到一个新数组中。