プログラミングC# 第4版

[cover photo]
  • Jesse Liberty 著、鈴木 幸敏、首藤 一幸、株式会社情報技研 訳
  • 2006年02月 発行
  • 672ページ
  • 定価5,040円
  • ISBN4-87311-264-8
  • 原書: Programming C#, Fourth Edition

この商品は絶版になりました

JIS策定に伴い、ますます人気の高まっているプログラミング言語C#。本書はC#を体系的に網羅した信頼のおける解説書の改訂第4版です。言語仕様から応用にいたるまで、C#プログラミングに必要な情報すべてが本書1冊に詰め込まれています。C#の構文、クラスとオブジェクト、継承とポリモーフィズム、演算子のオーバーロード、構造体、インターフェイス、配列とインデクサ、コレクション、文字列操作と正規表現、例外処理、デリゲートとイベント、WindowsフォームやWebフォームの作成、Webサービスの構築などC#プログラミングを極めるための実践的な解説が満載です。

関連書籍

.NET Framework エッセンシャルズ第2版
C# & VB.NET 比較ガイド
C# エッセンシャルズ 第2版

まえがき

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インターフェイス
	9.5	制約
	9.6	List
		9.6.1	IComparableインターフェイスの実装
		9.6.2	IComparerインターフェイスの実装
	9.7	Queueクラス
	9.8	Stackクラス
	9.9	Dictionaryクラス
		9.9.1	IDictionary

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#のキーワード

索引

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

P.240の26行目
  • 【誤】// オーバーロードされた+演算子を使います
  • 【正】// オーバーロードされた=演算子を使います
P.241
  • 【誤】// excellentという語をtrainingの前に挿入します
  • 【正】// excellentという語をTrainingの前に挿入します
P.246の16行目
  • 【誤】// 文字列s1はone two threeとなります
  • 【正】// 文字列s1はOne Two Threeとなります
P.246の18行目
  • 【誤】// s1中の最後の空白(twoの直後)を探します
  • 【正】// s1中の最後の空白(Twoの直後)を探します
P.246の22行目
  • 【誤】// s3は"three"となります
  • 【正】// s3はThreeとなります
P.246の25行目
  • 【誤】// つまりs1は"one two"となります
  • 【正】// つまりs1はOne Twoとなります
P.246の27行目
  • 【誤】// "one"と"two"の間にある空白の位置を
  • 【正】// OneとTwoの間にある空白の位置を
P.246の31行目
  • 【誤】// つまり"two"になります
  • 【正】// つまりTwoになります
P.246の34行目
  • 【誤】// つまり"one"になります
  • 【正】// つまりOneになります
P.250の下から5行目
  • 【誤】// StringBufferクラスを使って
  • 【正】// StringBuilderクラスを使って
P.261の下から5行目
  • 【誤】Console.WriteLine( "Company: {0}",
  • 【正】Console.WriteLine( "company: {0}",
P.319の21行目
  • 【誤】"Delegates fired! Returned result: {0}",
  • 【正】"デリゲートが実行されました!実行結果:{0}",
P.332の1行目
  • 【誤】「Ex」と入力した後、セミコロンを入力するだけでなんということでしょうか。
  • 【正】「Exi」と入力した後、「()」とセミコロンを入力するだけでなんということでしょうか。
P.388の下から3行目
  • 【誤】Hello World! It is now <% Response.Write(DateTime.Now.ToString()); %>
  • 【正】Hello World! 現在の時刻は <% Response.Write(DateTime.Now.ToString()); %> です。
P.418の下から10行目
  • 【誤】例16-2 SalesRankDBWebServices
  • 【正】例16-2 AmazonWebServiceClient
P.432の11行目
  • 【誤】例16-4 SalesDisplayに対する分離コード
  • 【正】例16-4 AmazonSalesRanksに対する分離コード
P.435の下から2行目
  • 【誤】SalesRankDBWebServices
  • 【正】AmazonWebServiceClient
P.468の2行目と8行目
  • 【誤】DoFunc(7)
  • 【正】DoFunc1(7)
P.470の11行目と30行目
  • 【誤】DoFunc(7)
  • 【正】DoFunc1(7)
P.473の23行目
  • 【誤】"?nSingle Type is {0}?n", theType );
  • 【正】"?n取り出した1つの型情報:{0}?n", theType);
P.487の下から18行目
  • 【誤】"Point constructor");
  • 【正】"Pointコンストラクタ");
P.488の下から18行目
  • 【誤】"Shape constructor");
  • 【正】"Shapeコンストラクタ");
P.489の3行目
  • 【誤】"Entered Main");
  • 【正】"Mainの始点");
P.490の15行目
  • 【誤】[Marshaling.vshost.exe] Entered Main
  • 【正】[Marshaling.vshost.exe] Mainの始点
P.534の下から4行目
  • 【誤】Console.Write( " " ); // two spaces per level
  • 【正】Console.Write( " " ); // インデントの深さごとに2つのスペース
P.541の10行目
  • 【誤】// Set it running with a directory name
  • 【正】// ディレクトリ名は実行環境に応じて変更すること
P.555の下から9行目
  • 【誤】@"C:?test?source?myTest.txt" );
  • 【正】@"C:?test?source?myText.txt" );
P.557の6行目
  • 【誤】static public void Main( string[] Args )
  • 【正】public static void Main( string[] args )
P.567の14行目
  • 【誤】buffer = new byte[256];
  • 【正】buffer = new byte[BufferSize];
P.572の下から7行目
  • 【誤】static public void Main( string[] Args )
  • 【正】public static void Main( string[] args )

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

P.185の下から2行目
  • 【誤】1次元は列(row)の数を表し、2次元は行(column)の数を表します。
  • 【正】1次元は行(row)の数を表し、2次元は列(column)の数を表します。
P.186の上から5行目
  • 【誤】列の数は2、行の数は3とします。
  • 【正】行の数は2、列の数は3とします。
P.189の上から8行目
  • 【誤】rectangularArray[1,0](2列目の最初)
  • 【正】rectangularArray[1,0](2行目の最初)
P.189の上から9行目
  • 【誤】rectangularArray[0,3](1列目の4番目)
  • 【正】rectangularArray[0,3](1行目の4番目)
P.189の下から13行目
  • 【誤】ジャグ配列を作成するときは、列の数を指定します。列はそれぞれ、
  • 【正】ジャグ配列を作成するときは、行の数を指定します。行はそれぞれ、
P.190の上から12行目
  • 【誤】// 4列のジャグ配列を作成します
  • 【正】// 4行のジャグ配列を作成します
P.190の上から14行目
  • 【誤】// 最初の列の長さは5です
  • 【正】// 最初の行の長さは5です
P.190の上から16行目
  • 【誤】// 2番目の列の長さは2です
  • 【正】// 2番目の行の長さは2です
P.190の上から18行目
  • 【誤】// 3番目の列の長さは3です
  • 【正】// 3番目の行の長さは3です
P.190の上から20行目
  • 【誤】// 最後の列の長さは5です
  • 【正】// 最後の行の長さは5です
P.191の下から15行目
  • 【誤】この例では、4列のジャグ配列を作成しています。
  • 【正】この例では、4行のジャグ配列を作成しています。
P.191の下から13行目
  • 【誤】2次元目のサイズは、各列
  • 【正】2次元目のサイズは、各行
P.191の下から12行目
  • 【誤】各列の配列はそれぞれサイズが異なっています。
  • 【正】各行の配列はそれぞれサイズが異なっています。
P.191の下から11行目
  • 【誤】// 最初の列の長さは5です
  • 【正】// 最初の行の長さは5です
P.191の下から9行目
  • 【誤】// 2番目の列の長さは2です
  • 【正】// 2番目の行の長さは2です
P.191の下から7行目
  • 【誤】// 3番目の列の長さは3です
  • 【正】// 3番目の行の長さは3です
P.191の下から5行目
  • 【誤】// 最後の列の長さは5です
  • 【正】// 最後の行の長さは5です
P.191の下から3行目
  • 【誤】各列の配列を作成した後は、
  • 【正】各行の配列を作成した後は、

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]