JIS策定に伴い、ますます人気の高まっているプログラミング言語C#。本書はC#を体系的に網羅した信頼のおける解説書の改訂第4版です。言語仕様から応用にいたるまで、C#プログラミングに必要な情報すべてが本書1冊に詰め込まれています。C#の構文、クラスとオブジェクト、継承とポリモーフィズム、演算子のオーバーロード、構造体、インターフェイス、配列とインデクサ、コレクション、文字列操作と正規表現、例外処理、デリゲートとイベント、WindowsフォームやWebフォームの作成、Webサービスの構築などC#プログラミングを極めるための実践的な解説が満載です。
プログラミングC# 第4版
Jesse Liberty 著、鈴木 幸敏、首藤 一幸、株式会社情報技研 訳
- TOPICS
- 発行年月日
- 2006年02月
- PRINT LENGTH
- 672
- ISBN
- 4-87311-264-8
- 原書
- Programming C#, Fourth Edition
- FORMAT
関連ファイル
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
正誤表 - 2006年3月掲載(2刷以降は修正済み)
P.240の26行目
- 【誤】// オーバーロードされた+演算子を使います
- 【正】// オーバーロードされた=演算子を使います
- 【誤】// excellentという語をtrainingの前に挿入します
- 【正】// excellentという語をTrainingの前に挿入します
- 【誤】// 文字列s1はone two threeとなります
- 【正】// 文字列s1はOne Two Threeとなります
- 【誤】// s1中の最後の空白(twoの直後)を探します
- 【正】// s1中の最後の空白(Twoの直後)を探します
- 【誤】// s3は"three"となります
- 【正】// s3はThreeとなります
- 【誤】// つまりs1は"one two"となります
- 【正】// つまりs1はOne Twoとなります
- 【誤】// "one"と"two"の間にある空白の位置を
- 【正】// OneとTwoの間にある空白の位置を
- 【誤】// つまり"two"になります
- 【正】// つまりTwoになります
- 【誤】// つまり"one"になります
- 【正】// つまりOneになります
- 【誤】// StringBufferクラスを使って
- 【正】// StringBuilderクラスを使って
- 【誤】Console.WriteLine( "Company: {0}",
- 【正】Console.WriteLine( "company: {0}",
- 【誤】"Delegates fired! Returned result: {0}",
- 【正】"デリゲートが実行されました!実行結果:{0}",
- 【誤】「Ex」と入力した後、セミコロンを入力するだけでなんということでしょうか。
- 【正】「Exi」と入力した後、「()」とセミコロンを入力するだけでなんということでしょうか。
- 【誤】Hello World! It is now <% Response.Write(DateTime.Now.ToString()); %>
- 【正】Hello World! 現在の時刻は <% Response.Write(DateTime.Now.ToString()); %> です。
- 【誤】例16-2 SalesRankDBWebServices
- 【正】例16-2 AmazonWebServiceClient
- 【誤】例16-4 SalesDisplayに対する分離コード
- 【正】例16-4 AmazonSalesRanksに対する分離コード
- 【誤】SalesRankDBWebServices
- 【正】AmazonWebServiceClient
- 【誤】DoFunc(7)
- 【正】DoFunc1(7)
- 【誤】DoFunc(7)
- 【正】DoFunc1(7)
- 【誤】"?nSingle Type is {0}?n", theType );
- 【正】"?n取り出した1つの型情報:{0}?n", theType);
- 【誤】"Point constructor");
- 【正】"Pointコンストラクタ");
- 【誤】"Shape constructor");
- 【正】"Shapeコンストラクタ");
- 【誤】"Entered Main");
- 【正】"Mainの始点");
- 【誤】[Marshaling.vshost.exe] Entered Main
- 【正】[Marshaling.vshost.exe] Mainの始点
- 【誤】Console.Write( " " ); // two spaces per level
- 【正】Console.Write( " " ); // インデントの深さごとに2つのスペース
- 【誤】// Set it running with a directory name
- 【正】// ディレクトリ名は実行環境に応じて変更すること
- 【誤】@"C:?test?source?myTest.txt" );
- 【正】@"C:?test?source?myText.txt" );
- 【誤】static public void Main( string[] Args )
- 【正】public static void Main( string[] args )
- 【誤】buffer = new byte[256];
- 【正】buffer = new byte[BufferSize];
- 【誤】static public void Main( string[] Args )
- 【正】public static void Main( string[] args )
正誤表 - 2006年7月掲載
P.185の下から2行目
- 【誤】1次元は列(row)の数を表し、2次元は行(column)の数を表します。
- 【正】1次元は行(row)の数を表し、2次元は列(column)の数を表します。
- 【誤】列の数は2、行の数は3とします。
- 【正】行の数は2、列の数は3とします。
- 【誤】rectangularArray[1,0](2列目の最初)
- 【正】rectangularArray[1,0](2行目の最初)
- 【誤】rectangularArray[0,3](1列目の4番目)
- 【正】rectangularArray[0,3](1行目の4番目)
- 【誤】ジャグ配列を作成するときは、列の数を指定します。列はそれぞれ、
- 【正】ジャグ配列を作成するときは、行の数を指定します。行はそれぞれ、
- 【誤】// 4列のジャグ配列を作成します
- 【正】// 4行のジャグ配列を作成します
- 【誤】// 最初の列の長さは5です
- 【正】// 最初の行の長さは5です
- 【誤】// 2番目の列の長さは2です
- 【正】// 2番目の行の長さは2です
- 【誤】// 3番目の列の長さは3です
- 【正】// 3番目の行の長さは3です
- 【誤】// 最後の列の長さは5です
- 【正】// 最後の行の長さは5です
- 【誤】この例では、4列のジャグ配列を作成しています。
- 【正】この例では、4行のジャグ配列を作成しています。
- 【誤】2次元目のサイズは、各列
- 【正】2次元目のサイズは、各行
- 【誤】各列の配列はそれぞれサイズが異なっています。
- 【正】各行の配列はそれぞれサイズが異なっています。
- 【誤】// 最初の列の長さは5です
- 【正】// 最初の行の長さは5です
- 【誤】// 2番目の列の長さは2です
- 【正】// 2番目の行の長さは2です
- 【誤】// 3番目の列の長さは3です
- 【正】// 3番目の行の長さは3です
- 【誤】// 最後の列の長さは5です
- 【正】// 最後の行の長さは5です
- 【誤】各列の配列を作成した後は、
- 【正】各行の配列を作成した後は、
目次
まえがき I部 C#言語 1章 C#と.NET Framework 1.1 .NETプラットフォーム 1.2 .NET Framework 1.3 コンパイルとMSIL 1.4 C#言語 2章 最初の一歩:Hello World 2.1 クラス、オブジェクト、型 2.1.1 メソッド 2.1.2 コメント 2.1.3 コンソールアプリケーション 2.1.4 名前空間 2.1.5 ドット演算子(.) 2.1.6 usingキーワード 2.1.7 アルファベットの大文字と小文字 2.1.8 staticキーワード 2.2 “Hello World”の開発 2.2.1 “Hello World”の編集 2.2.2 “Hello World”のコンパイルと実行 2.3 Visual Studioデバッガの使用 3章 C#言語の基礎 3.1 型 3.1.1 組み込みの型 3.2 変数と定数 3.2.1 確実な代入 3.2.2 定数 3.2.3 列挙体 3.2.4 文字列 3.2.5 識別子 3.3 式 3.4 空白文字 3.5 文 3.5.1 無条件分岐 3.5.2 条件分岐 3.5.3 繰り返し文 3.6 演算子 3.6.1 代入演算子(=) 3.6.2 算術演算子 3.6.3 インクリメント、デクリメント演算子 3.6.4 関係演算子 3.6.5 条件式に用いる論理演算子 3.6.6 演算子の優先順位 3.6.7 唯一の3項演算子 3.7 プリプロセスディレクティブ 3.7.1 シンボルの定義 3.7.2 シンボルの未定義化 3.7.3 #if、#elif、#else、#endif 3.7.4 #region 4章 クラスとオブジェクト 4.1 クラスの定義 4.1.1 アクセス修飾子 4.1.2 メソッドの引数 4.2 オブジェクトの作成 4.2.1 コンストラクタ 4.2.2 初期化子 4.2.3 ICloneableインターフェイス 4.2.4 thisキーワード 4.3 staticメンバの使用 4.3.1 staticメソッドの呼び出し 4.3.2 staticコンストラクタの使用 4.3.3 staticクラス 4.3.4 staticフィールドの使用 4.4 オブジェクトの破壊 4.4.1 C#のデストラクタ 4.4.2 デストラクタかDisposeか 4.4.3 Closeメソッド 4.4.4 using文 4.5 引数の受け渡し 4.5.1 参照渡し 4.5.2 out引数による確実な代入 4.6 メソッドとコンストラクタのオーバーロード 4.7 プロパティによるデータのカプセル化 4.7.1 getアクセサ 4.7.2 setアクセサ 4.7.3 プロパティのアクセス修飾子 4.8 readonlyフィールド 5章 継承とポリモーフィズム 5.1 特化と汎化 5.2 継承 5.2.1 継承の実装方法 5.3 ポリモーフィズム 5.3.1 ポリモーフィックな型の作成 5.3.2 ポリモーフィックなメソッドの作成 5.3.3 基本クラスのコンストラクタの呼び出し 5.3.4 アクセス制御 5.3.5 newとオーバーライドによるバージョン管理 5.4 抽象クラス 5.4.1 abstractの限界 5.4.2 シールクラス 5.5 すべてのクラスの根:Object 5.6 型のボックス化とボックス化解除 5.6.1 ボックス化は暗黙のうちに 5.6.2 ボックス化解除は明示的に 5.7 入れ子になったクラス 6章 演算子のオーバーロード 6.1 operatorキーワード 6.2 他.NET言語への配慮 6.3 オーバーロードすべき場合 6.4 対となる比較演算子 6.5 ==演算子 6.6 変換演算子 7章 構造体 7.1 構造体の定義 7.2 構造体の作成 7.2.1 値型 7.2.2 newを用いない構造体の作成 8章 インターフェイス 8.1 インターフェイスの定義および実装 8.1.1 複数のインターフェイスの実装 8.1.2 インターフェイスの拡張 8.1.3 インターフェイスの結合 8.2 インターフェイスの型を通したアクセス 8.2.1 インターフェイスから特定の型へのキャスト 8.2.2 is演算子 8.2.3 as演算子 8.2.4 is演算子かas演算子か 8.2.5 インターフェイスか抽象クラスか 8.3 インターフェイスが規定するメソッドのオーバーライド 8.4 明示的なインターフェイスメンバの実装 8.4.1 インターフェイスメンバの選択的な公開 8.4.2 メンバの隠蔽 8.4.3 インターフェイスを通した値型へのアクセス 9章 配列、インデクサ、コレクション 9.1 配列 9.1.1 配列の宣言 9.1.2 要素の既定値 9.1.3 配列の要素へのアクセス 9.2 foreach文 9.2.1 配列の各要素の初期化 9.2.2 paramsキーワード 9.2.3 多次元配列 9.2.4 配列の境界 9.2.5 配列の型変換 9.2.6 配列のソート 9.3 インデクサ 9.3.1 インデクサと代入 9.3.2 整数以外を添字とするインデクサ 9.4 コレクションのためのインターフェイス 9.4.1 IEnumerable>T<インターフェイス 9.5 制約 9.6 List>T< 9.6.1 IComparableインターフェイスの実装 9.6.2 IComparerインターフェイスの実装 9.7 Queueクラス 9.8 Stackクラス 9.9 Dictionaryクラス 9.9.1 IDictionary>K,V< 10章 文字列と正規表現 10.1 文字列 10.1.1 文字列の作成 10.1.2 ToStringメソッド 10.1.3 文字列の操作 10.1.4 部分文字列の取得 10.1.5 文字列の分割 10.1.6 StringBuilderクラス 10.2 正規表現 10.2.1 正規表現を使う:Regexクラス 10.2.2 MatchCollectionクラス 10.2.3 グループ 10.2.4 CaptureCollectionクラス 11章 例外 11.1 例外の発生と捕捉 11.1.1 throw文 11.1.2 catch節 11.1.3 finally節 11.2 例外オブジェクト 11.3 独自の例外 11.4 例外の再スロー 12章 デリゲートとイベント 12.1 デリゲート 12.1.1 デリゲートを使ったメソッドの実行時指定 12.1.2 デリゲートとインスタンスメソッド 12.1.3 staticデリゲート 12.1.4 デリゲートを提供するプロパティ 12.2 マルチキャスト 12.3 イベント 12.3.1 publishとsubscribe 12.3.2 イベントとデリゲート 12.3.3 イベントによるデリゲートの問題点の解決 12.3.4 eventキーワード 12.4 匿名メソッドの使用 12.5 マルチキャストデリゲートの各メソッドからの返り値 12.5.1 デリゲートの非同期呼び出し 12.5.2 コールバック II部 C#プログラミング 13章 Windowsアプリケーションの作成 13.1 単純なWindowsフォームの作成 13.1.1 Visual Studioのデザイナを使う 13.2 Windowsフォームアプリケーションの作成 13.2.1 基本的なユーザインターフェイスフォームの作成 13.2.2 TreeViewのデータ設定 13.2.3 TreeViewのイベントの処理 13.2.4 [コピー]ボタンのイベントの実装 13.2.5 [削除]ボタンのイベントの処理 13.3 XMLドキュメントコメント 14章 ADO.NETを使ったデータアクセス 14.1 リレーショナルデータベースとSQL 14.1.1 テーブル、レコード、列 14.1.2 正規化 14.1.3 宣言参照整合性 14.1.4 SQL 14.2 ADO.NETのオブジェクトモデル 14.2.1 DataTableとDataColumn 14.2.2 Relations 14.2.3 Rowsコレクション 14.2.4 DataAdapter 14.2.5 DBCommandとDBConnection 14.2.6 DataAdapter 14.2.7 DataReader 14.3 ADO.NET 14.4 OLE DBマネージプロバイダの使用 14.5 データを連結したコントロールの使用 14.5.1 プログラムからのDataGridのデータ設定 14.5.2 DataSetのカスタマイズ 15章 ASP.NETおよびWebサービスプログラミング 15.1 Webフォームを理解する 15.1.1 Webフォームのイベント 15.1.2 Webフォームの有効期間 15.2 Webフォームの作成 15.2.1 分離コードファイル 15.3 コントロールの追加 15.3.1 サーバサイドコントロール 15.4 データの関連づけ 15.4.1 コードの詳細 15.4.2 コントロールとイベントの追加 15.5 Webサービス 15.6 SOAP、WSDLならびに探索ドキュメント 15.6.1 サーバ側の準備 15.6.2 クライアント側の準備 15.7 Webサービスの作成 15.7.1 Webサービスのテスト 15.7.2 WSDLドキュメントの表示 15.8 プロキシの作成 15.8.1 Webサービスのテスト 16章 機能連係したアプリケーションの開発 16.1 全体の概要 16.2 Webサービスクライアントの作成 16.3 データの表示 16.3.1 GridViewへのデータ設定 16.3.2 RowDataBoundイベントの処理 16.4 カテゴリ検索 III部 CLRと.NET Framework 17章 アセンブリとバージョン管理 17.1 PEファイル 17.2 メタデータ 17.3 セキュリティ境界 17.4 マニフェスト 17.5 マルチモジュールアセンブリ 17.5.1 マルチモジュールアセンブリのビルド 17.6 プライベートアセンブリ 17.7 共有アセンブリ 17.7.1 「DLL地獄」の終結 17.7.2 バージョン管理 17.7.3 厳密名 17.7.4 GAC 17.7.5 共有アセンブリのビルド 17.7.6 その他のアセンブリ要件 18章 属性とリフレクション 18.1 属性 18.1.1 属性 18.1.2 カスタム属性 18.2 リフレクション 18.2.1 メタデータの表示 18.2.2 型の探索 18.2.3 型のリフレクション 18.2.4 実行時バインディング 19章 マーシャリングとリモート処理 19.1 アプリケーションドメイン 19.1.1 アプリケーションドメインの作成と使用方法 19.1.2 アプリケーションドメイン境界を越えるオブジェクトの作成 19.2 コンテキスト 19.2.1 コンテキスト拘束オブジェクトとコンテキスト非拘束オブジェクト 19.2.2 コンテキスト境界を越えるオブジェクトの作成 19.3 リモート処理 19.3.1 サーバオブジェクトを理解する 19.3.2 インターフェイスを使用したサーバの機能作成 19.3.3 サーバの作成 19.3.4 クライアントの作成 19.3.5 SingleCallの使用 19.3.6 RegisterWellKnownServiceTypeを理解する 19.3.7 エンドポイントを理解する 20章 スレッドと同期処理 20.1 スレッド 20.1.1 スレッドの開始 20.1.2 スレッドの結合 20.1.3 Sleepを使ったスレッドのブロック処理 20.1.4 スレッドの停止 20.2 同期処理 20.2.1 Interlockedクラスの使用 20.2.2 ロックの使用 20.2.3 Monitorの使用 20.3 競合状態とデッドロック 20.3.1 競合状態 20.3.2 デッドロック 21章 ストリーム 21.1 ファイルとディレクトリ 21.1.1 Directoryの使用 21.1.2 DirectoryInfoオブジェクトの作成 21.1.3 Fileクラスの使用 21.1.4 ファイルの修正 21.2 データの読み取りと書き込み 21.2.1 バイナリファイル 21.2.2 BufferedStream 21.2.3 テキストファイルの操作 21.3 非同期I/O 21.4 ネットワークI/O 21.4.1 ネットワークストリームサーバの構築 21.4.2 ネットワークストリームクライアントの作成 21.4.3 複数コネクションの扱い 21.4.4 非同期ネットワークファイルストリーム 21.5 Webストリーム 21.6 シリアル化 21.6.1 フォーマッタの使用 21.6.2 シリアル化の使用 21.6.3 一時データの扱い 21.7 分離ストレージ 22章 .NETとCOMの連携 22.1 ActiveXコントロールのインポート 22.1.1 ActiveXコントロールの作成 22.1.2 ActiveXコントロールを.NETにインポートする 22.2 COMコンポーネントのインポート 22.2.1 COMテスト用フォームの実装 22.2.2 COMのDLLを.NETにインポートする 22.2.3 タイプライブラリのインポート 22.2.4 手動でのインポート 22.2.5 テストプログラムの実行 22.2.6 実行時バインディングおよびリフレクションの使用 22.3 .NETコンポーネントのエクスポート 22.3.1 タイプライブラリの作成 22.4 プラットフォーム呼び出し(P/Invoke) 22.5 ポインタ 付録 C#のキーワード 索引