- ベストアンサー
C#プログラムで月の日数を取得する方法
- C#プログラムを使って、月の日数を取得する方法について説明します。
- 例外が発生する問題についても解説します。
- 質問の内容に関連するTipsも紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 int[] m = new int[12]; なので、 m{0,1,2,3,4,5,6,7,8,9,10,11} のINDEXが範囲内です。 よって、 m[Mo] = DateTime.DaysInMonth(Ye, (Mo)); m[12]はエラーです・・・。
その他の回答 (1)
- koumei000
- ベストアンサー率38% (13/34)
taka451213 さんのおっしゃる通りで、少しだけ補足すると、配列の長さを12に設定しても、インデックスのカウントは0から始まるので、1番目の値のインデックスは0、12番目は11になります。 for文で 「○ <= ◇;」とされていますが、○がインデックスのように0から始まる値で、◇が1から始まるような数値の場合は「○ < ◇;」とするのがよいでしょう。 それと、例外が発生した場合は例外名が表示され、一部を除いてエラーのあった行がハイライトされるのでそれについて調べた方が早いでしょう。 (今回は 'System.IndexOutOfRangeException' になっているはず。(「インデックスの境界外ですよ」という意味)) --------------------------- 以下は余分 お節介ですが、2~3週間ぶりに自分のコードを見たときは他人がそれを見たのとほぼ同じ。似たような名前の変数は厄介なのでもう少し工夫しましょう。 また変数名に接頭語を使うのはハンガリアン表記とか言われていますが、インテリセンスがあると「iYear」を打とうとして「Year」だけを自分が覚えていた場合、「Year」とだけ打っても候補に出てこないことがあり、「あれっ? 接頭語はなんだっけな?」とか、覚えていてもつい「Year」と打ってしまって、いちいち入力し直したりすることもある(実話)ので注意してください。(どの表記・方式を使うかは自分次第) 特にこだわりがなければfor文の「i」(,「j」,「k」,…)はループで使われる変数だと一目瞭然なので変えないほうが吉。 .NETの命名規則 http://dobon.net/vb/dotnet/beginner/namingrules.html