![]() | TOP | ![]() | 今月刊 | ![]() | 既刊 | ![]() | I/O | ![]() | サポート | ![]() | Q&A | ![]() | Web I/O | ![]() | 通販 | ![]() | お問い合わせ | ![]() |
|
これは本書の間違いでございます。ご迷惑をお掛けしたことをお詫び申し上げます。
C#言語では、C++言語のように識別子の後に[ ]を記述する書式は許されておりませんので、「int a[] = {1,2,3};」はエラーになります。また、「int[] a = new a[3] {1,2,3};」は、「int[] a = new int[3] {1,2,3};」の間違いだと思われます。
これは本書の間違いでございます。ご迷惑をお掛けしたことをお詫び申し上げます。
C#言語の文法では「フォールスルー」が禁止されておりますので、C++言語のようにswitch case内でのbreak文を単純に省略することはできません。そのため、break文の省略に関する38ページの説明と39ページのサンプルは間違っております。
C#でC++言語のような「フォールスルー」を行なうには、単にbreak文を省略するのではなく、goto文を使って次のswitchセクションに明示的に移動する必要があります。
”現在の時刻「時、分、秒」を表示”というところで、
DateTime dat = DateTime.Now;
label1.Text = dat.TimeOfDay.ToString();
という命令を試しましたが「14:57:30」という形の結果ではなく、
「14:57:30:372000」というような結果がでました。
これはどうゆう意味でしょうか?
「時、分、秒」だけを取得したいのですが・・・
DateTime構造体のTimeOfDayメソッドはインスタンスの時刻を表わすTimeSpan構造体を返します。
このコードでは、TimeOfDayメソッドで得られたTimeSpan構造体のToStringメソッドを使って、TimeSpan構造体のインスタンスを表わす文字列を出力しています。このとき、TimeSpan構造体のToStringメソッドは、「[-][d.]hh:mm:ss[.ff]」形式の文字列を出力します。
詳しい定義はVisual Studioのヘルプをご参照ください。
ご質問のように書式を正確に指定したい場合は、本書の65ページで解説している日付書式を使うのが確実です。
たとえば、
------------------------------------------------------
DateTime dat = DateTime.Now;
label1.Text = dat.ToString("T");
------------------------------------------------------
または、
------------------------------------------------------
DateTime dat = DateTime.Now;
label1.Text = dat.ToString("H時m分s秒");
------------------------------------------------------
などと指定するとよいのではないでしょうか。