TOP今月刊既刊I/OサポートQ&AWeb I/O通販お問い合わせ
 Q&A > Visual C#.NET教科書 書名検索: 詳細検索...
Q&A一覧
Q

1次元配列の初期化でエラーが出る

30ページの上の方にある1次元配列の初期化のところで、
int a[] = {1,2,3};
int[] a = {1,2,3};
int[] a = new a[3]{1,2,3};
と記載されていますが、
int[] a ={1,2,3};以外はエラーがでて実行できません。
これはどうしてですか?
2006年10月06日受付
A

これは本書の間違いでございます。ご迷惑をお掛けしたことをお詫び申し上げます。

C#言語では、C++言語のように識別子の後に[ ]を記述する書式は許されておりませんので、「int a[] = {1,2,3};」はエラーになります。また、「int[] a = new a[3] {1,2,3};」は、「int[] a = new int[3] {1,2,3};」の間違いだと思われます。

最終更新日:2006年10月06日 18時12分50秒
▲このページの上へ
Q

switch case内でのbreak文を省略するとエラーが出る

この教科書の38ページのswitch文ですが、
ページの下の方に必要がなければbreakを省略できると記載されています。
そして次のページにはサンプルプログラムまでありますが、
breakがないとエラーがでました。サンプルプログラムもエラーでした。
どうしてですか?
2006年10月06日受付
A

これは本書の間違いでございます。ご迷惑をお掛けしたことをお詫び申し上げます。

C#言語の文法では「フォールスルー」が禁止されておりますので、C++言語のようにswitch case内でのbreak文を単純に省略することはできません。そのため、break文の省略に関する38ページの説明と39ページのサンプルは間違っております。
C#でC++言語のような「フォールスルー」を行なうには、単にbreak文を省略するのではなく、goto文を使って次のswitchセクションに明示的に移動する必要があります。

最終更新日:2006年10月06日 18時11分38秒
▲このページの上へ
Q

「時、分、秒」だけを取得したい

”現在の時刻「時、分、秒」を表示”というところで、

DateTime dat = DateTime.Now;
label1.Text = dat.TimeOfDay.ToString();

という命令を試しましたが「14:57:30」という形の結果ではなく、
「14:57:30:372000」というような結果がでました。
これはどうゆう意味でしょうか?
「時、分、秒」だけを取得したいのですが・・・

2006年10月06日受付
A

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秒");
------------------------------------------------------
などと指定するとよいのではないでしょうか。

最終更新日:2006年10月06日 18時10分04秒
▲このページの上へ