そのため、文字列の配列のように機能する単純な構造体を作成していますが、文字列で常に見たいと思っていたいくつかの便利な演算子やその他の関数を使用しています。具体的には、現在取り組んでいるメソッドは / 演算子です。問題は、私が望むように最後に残りを追加しないことです。
それがすべきことは、文字列の配列を取得すること{"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;
}
}
}
基本的には、配列(単一の配列)を取り、それを同じサイズの配列の束に分割し、最後に新しい配列の残りを追加します。