|
【12月17日】特集:Visual Studio 2005がやってきた(前編)において、画面「新規プロジェクトの作成」がVisual Studio Team Systemのものとなっておりました。また、表「VS 2005で利用可能な主なプロジェクト」の「分類」として「Office」「テスト」が含まれておりましたが、VS 2005 Professional Editionにはこの分類は含まれておりません。また、以下の文章はVS 2005 Professional Editionには当てはまりません。以上、お詫びして訂正させていただきます。
削除 |
従来のVisual Studio .NET 2003(以降、VS.NET)では、アドオン・テンプレートであったVSTO(Visual Studio Tools for Office)が標準で搭載された点も注目だ。VSTOとは、Officeドキュメントから.NETのアセンブリを呼び出し、実行する仕組みである。
VS 2005版のVSTOでは、Officeドキュメント自体をVS上で編集できる、Windowsフォームのコントロールを利用できるなど、開発生産性を向上させるさまざまな新機能が追加された。その有効性は認められながらも、VS.NETの時代はいまいち盛り上がらなかった同機能であるが、VS 2005でより開発が行いやすくなったことで、今後に期待できるソリューションだ。 |
【10月20日】「特集PDC05レポート:動的プログラミング言語へと発展するC# 3.0とVB 9.0」において、以下の部分に誤りがありました。VB.NETでは型文字が指定されていない場合、Integer型の範囲内の値はInteger型となります。また、Integer型同士の「/」による除算はDecimal型に変換されて計算されます。お詫びして削除させていただきます。
削除 |
一方VBでは、次のコードの結果は「0.333333333333333」になる。VBではリテラルの数値はDouble型になっている。
Module Module1
Sub Main()
Dim x As Integer = 1
System.Console.WriteLine(x / 3)
End Sub
End Module
にもかかわらず、VBで「Dim x = 1」と書いて変数xをDouble型にすることはできない。 |
【9月22日】連載:「.NETで簡単XML」の「第16回 川俣流XMLプログラミングの定石(2)」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
速度を重視するなら「参照直前に行う」方法がベターであり、未知の要素や属性が保存されることを重視するなら「参照直前に行う」方法がベターであるといえる。
|
正 |
速度を重視するなら「解析直後に行う」方法がベターであり、未知の要素や属性が保存されることを重視するなら「参照直前に行う」方法がベターであるといえる。 |
誤 |
XmlReader/XmlWriterを使う場合は、「解析直後に行う」方法のみが使え、「解析直後に行う」方法の使用は困難であることに注意が必要である。
|
正 |
XmlReader/XmlWriterを使う場合は、「解析直後に行う」方法のみが使え、「参照直前に行う」方法の使用は困難であることに注意が必要である。 |
誤 |
たいていは「解析直後に行う」方法と「解析直後に行う」方法の2種類の定石を持っているだけで事足りるように思う。
|
正 |
たいていは「解析直後に行う」方法と「参照直前に行う」方法の2種類の定石を持っているだけで事足りるように思う。 |
【7月6日】連載:「.NETの動作原理を基礎から理解する!」の「第1回 .NETアプリケーションを動かす土台」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
CPUが「メイン・メモリ」からWindowsのプログラム・データの処理命令を<フェッチ>して、その命令内容を<デコード>する
|
正 |
CPUが「メイン・メモリ」からプログラム・データの処理命令を<フェッチ>して、その命令内容を<デコード>する |
【5月26日】.NET TIPS「モーダル・ダイアログやモードレス・ダイアログを表示するには?」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
ShowDialogメソッドの戻り値は、ダイアログの処理結果を示すためにDialogResultプロパティで設定しておいた値である。このDialogResultプロパティの値には、DialogResult列挙体の値が使われる。
モーダル・ダイアログの[閉じる]ボタンであるButtonオブジェクトをDialogオブジェクトのAcceptButtonプロパティに設定しておけば、ダイアログが閉じられたあと、ShowDialogメソッドの戻り値としてDialogResult.OKが返されるようになる。この場合には、[閉じる]ボタンのClickイベント・ハンドラを実装する必要がなくなる。[キャンセル]ボタンの場合も同様に、CancelButtonプロパティを設定しておけば、ダイアログが自動的に閉じられたあと、ShowDialogメソッドの戻り値としてDialogResult.Cancelが返されるようになる。ただし、これらのAcceptButtonプロパティやCancelButtonプロパティが有効に機能するのは、モーダル・ダイアログの場合だけである。次に紹介するモードレス・ダイアログでは機能しないので注意が必要である。
|
正 |
ShowDialogメソッドの戻り値は、ダイアログの処理結果を示すためのもので、Dialogオブジェクト(=フォーム)のDialogResultプロパティの値である。このDialogResultプロパティの値には、DialogResult列挙体の値が使われる。
モーダル・ダイアログ上のButtonオブジェクト(本稿の例では、[閉じる]ボタン)を、DialogオブジェクトのAcceptButtonプロパティに設定すれば、ユーザーがフォーム上で[Enter]キーを押したときに、そのボタンのクリック処理が実行されるようになる。また、CancelButtonプロパティを設定しておけば、ユーザーがフォーム上で[Escape]キーを押したときに、そのボタンのクリック処理が実行されるようになる。
ボタンのDialogResultプロパティに、「DialogResult.Cancel」や「DialogResult.OK」などのDialogResult列挙体の値が設定されている場合、そのボタンがクリックされるとDialogオブジェクトのDialogResultプロパティに対してそのDialogResult列挙体の値が設定される。モーダル・ダイアログでは、DialogオブジェクトのDialogResultプロパティに「DialogResult.None」以外の値が設定されると、自動的にダイアログが終了する仕組みになっている。このため、ボタンのDialogResultプロパティを設定すれば、ボタンのClickイベント・ハンドラでダイアログの終了処理を実装する必要はない(ただし次に紹介するモードレス・ダイアログの場合は、Closeメソッドなどによるダイアログの終了処理が必要となる)。
なお、DialogオブジェクトのCancelButtonプロパティを設定すると、設定されたボタンのDialogResultプロパティに「DialogResult.Cancel」が自動的に設定される(ただし、この自動設定が行われるのは、ボタンのDialogResultプロパティの値が「DialogResult.None」の場合のときだけだ)。しかし、AcceptButtonプロパティを設定した場合では、設定されたボタンのDialogResultプロパティの値は変更されないので注意してほしい。
ちなみに、モーダル・ダイアログで、フォーム上部のタイトル・バーにある[×]ボタン(=[閉じる]ボタン)をクリックしてダイアログを閉じた場合、DialogオブジェクトのDialogResultプロパティには「DialogResult.Cancel」が固定的に設定される。 |
【5月26日】.NET TIPS「ハッシュテーブル(連想配列)を使うには?」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
指定したキーがハッシュテーブル(この例ではht)に存在しない場合には、新しい要素として登録される。キーがすでに存在する場合には、それに対応する値が置き換えられる。
|
正 |
指定したキーがハッシュテーブル(この例ではht)に存在しない場合には、新しい要素として登録される。キーがすでに存在する場合には、インデクサではそのキーに対応する値が置き換えられるが、Addメソッドでは例外が発生する。
|
【3月29日】.NET TIPS「ファイルやディレクトリの一覧を取得するには?」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
まずDirectoryクラスのメソッドでは、次のようにして検索を行える。
string[] files = Directory.GetFiles("c:\\", "*Microsoft*");
string[] dirs = Directory.GetDirectories("c:\\", "*.cs");
string[] both = Directory.GetFileSystemEntries("c:\\", "??");
この例では、上から順に、“Microsoft”を含むディレクトリ、拡張子が“.cs”のファイル、名前が2文字以内のディレクトリかファイルを、Cドライブのルート・ディレクトリから検索する。
同様に、DirectoryInfoクラスを使用する場合の記述例は次のようになる。
DirectoryInfo di = new DirectoryInfo("c:\\");
FileInfo[] fis = di.GetFiles("*Microsoft*");
DirectoryInfo[] dis = di.GetDirectories("*.cs");
FileSystemInfo[] fsis = di.GetFileSystemInfos("??"); |
正 |
まずDirectoryクラスのメソッドでは、次のようにして検索を行える。
string[] files = Directory.GetFiles("c:\\", "*.cs");
string[] dirs = Directory.GetDirectories("c:\\", "*Microsoft*");
string[] both = Directory.GetFileSystemEntries("c:\\", "??");
この例では、上から順に、拡張子が“.cs”のファイル、“Microsoft”を含むディレクトリ、名前が2文字以内のディレクトリかファイルを、Cドライブのルート・ディレクトリから検索する。
同様に、DirectoryInfoクラスを使用する場合の記述例は次のようになる。
DirectoryInfo di = new DirectoryInfo("c:\\");
FileInfo[] fis = di.GetFiles("*.cs");
DirectoryInfo[] dis = di.GetDirectories("*Microsoft*");
FileSystemInfo[] fsis = di.GetFileSystemInfos("??");。 |
【3月15日】連載:「実例で学ぶWindowsプログラミング」の「第2回 継承と属性プログラミングで実現するRAD開発」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
このMenuButton.MenuButtonDesignerクラスの具体的な実装内容は次のとおりだ。 |
正 |
このMenuButton.MenuButtonDesignerクラスの具体的な実装内容は次のとおりだ(なおこのクラスをビルドするには、あらかじめ「System.Design.dll」への[参照の追加]が必要)。 |
VB.NETのサンプル・コード(winexp02_05.vb)
誤 |
<ToolboxBitmap(Type.GetType(Button))> _
<Designer(Type.GetType(MenuButton.MenuButtonDesigner))> _ |
正 |
<ToolboxBitmap(GetType(System.Windows.Forms.Button)), _
Designer(GetType(MenuButton.MenuButtonDesigner))> _ |
【3月15日】.NET TIPS「Windowsフォーム上のコントロールの位置やサイズを固定するには?」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
一部のコントロールだけを指定してロックすることは(IDEのWindowsフォーム・デザイナの仕様上)残念ながらできないようだ。 |
正 |
一部のコントロールだけを指定してロックするには、IDEのWindowsフォーム・デザイナでコントロールを選択して、[プロパティ]ウィンドウでLockedプロパティの値を「True」に指定すればよい。 |
誤 |
IDEのWindowsフォーム・デザイナはフォーム上のすべてのコントロールの<コントロール名>.Lockedの値を一括して「True」「False」に設定してしまうが、このリソース・エディタを使えば特定のコントロールのみをロックすることも可能だ。しかしそのようなコントロールのロック状態はIDEで想定されていないと思われるため、何らかの問題が生じないとも限らない。従って筆者は、そのような設定を行うことをお勧めしない。 |
正 |
IDEのWindowsフォーム・デザイナはフォーム上のすべてのコントロールの<コントロール名>.Lockedの値を一括して「True」「False」に設定する仕様となっている。個別のコントロールをロックしたい場合には、[プロパティ]ウィンドウでそれぞれのコントロールのLockedプロパティを「True」に指定する必要がある。 |
【1月21日】連載:改訂版「プロフェッショナルVB.NETプログラミング」の「Chapter 02 データ型の変化 − 通貨、日付、構造体の変化」において以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
それに対して、Decimal型は -79,228,162,514,264,337,593,543,950,335から79,228,162,514,264,337, 593,543,950,335までの値を扱う固定小数点数値であるが、小数部の桁数は1つに決まっておらず、必要に応じて小数点の位置を変えていく仕組みのようである。 |
正 |
それに対して、Decimal型は -79,228,162,514,264,337,593,543,950,335から79,228,162,514,264,337, 593,543,950,335までの値を扱う小数点数値であるが、小数部の桁数は1つに決まっておらず、必要に応じて小数点の位置を変えていく仕組みである。 |
|