トップ回答者
Data の配列を返す関数

質問
回答
-
コンパイルエラーのメッセージがちょっと分かりづらいですね。
配列の初期化の記述で、new を使わずに書けるのは変数の宣言と初期化を同時に行うときのみです。つまり、
string[] a = { "a", "b" };
は変数 a の宣言と a の初期化が同時に行われているので書けますが、
string[] a;
a = { "a", "b" }
は書けません。
直接 return の後ろに書くのも、そもそも変数の宣言がないので書けません。省略せずに
return new string[] { "a", "b" }
と記述する必要があります。
// C# のバージョンによっては(3.0 からだっけ?)、new[] { "a", "b" } と記述することはできます。
- 回答としてマーク yasheeki 2010年10月30日 17:22
すべての返信
-
”エラーになる”というだけでなく、どのようなエラーが出るかは明示するべきです。
また、どういったことを試した、調べた、考えたかも一緒に添えるようにしてください。基礎中の基礎だと自分でわかっているのであれば、調べること、考えることも重要です。
調べた、考えた結果でわからなかったのであれば、その努力の過程を知れると、今後はこうやって調べたら良いとか、考えたら良いとかアドバイスを得られるかもしれません。さて、この例、3 つくらい問題があります。
・そもそも、: が足りてません。
・return new string[] { "A", "B" }; なら通りますよね。VC#2008 なら、return new [] { "A", "B"}; とかでも。
・num が 0 以下や 4 以上だったら、この関数はどのような動きをするか考えてください。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。 -
コンパイルエラーのメッセージがちょっと分かりづらいですね。
配列の初期化の記述で、new を使わずに書けるのは変数の宣言と初期化を同時に行うときのみです。つまり、
string[] a = { "a", "b" };
は変数 a の宣言と a の初期化が同時に行われているので書けますが、
string[] a;
a = { "a", "b" }
は書けません。
直接 return の後ろに書くのも、そもそも変数の宣言がないので書けません。省略せずに
return new string[] { "a", "b" }
と記述する必要があります。
// C# のバージョンによっては(3.0 からだっけ?)、new[] { "a", "b" } と記述することはできます。
- 回答としてマーク yasheeki 2010年10月30日 17:22
-
皆様、申し訳ありませんでした。
public string[] GetTheAlphabet(int num)
{
switch (num)
{
case 1:
return new [] { "A", "B" };
case 2:
return new [] { A", "B", "C" };
case 2:
return new [] { "A", "B", "C", "D" };
default:
return null;
}
}
というもので、解決しました。が、new演算子を使うことが理解できていなかったのでした。また、Azulean さんのおっしゃる通り、コロンが足りていませんでしたし、default の記述もなく、全くでたらめで恥ずかしい限りです。
そして、配列の初期化の記述にnew演算子を付けていなのが問題でした。この3つの他に、ちょっと離れるとすぐに忘れてしまう個人的でもっとも重要な大問題があったことも否めません、です。