独習C# 第3版(ハーバート・シルト 矢嶋 聡)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. 独習C# 第3版

独習C# 第3版


監修

形式:
書籍
発売日:
ISBN:
9784798122205
定価:
4,180(本体3,800円+税10%)
仕様:
B5変・704ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
シリーズ:
独習
紙の書籍
本書籍には新版があります
独習C# 新版

初心者に最適のC#独習書が、C# 4.0に対応して再登場

C# 言語の独学に最適な教科書として好評の『独習C#』が、3 年ぶりの改訂で新登場です。本書では、C# でオブジェクト指向プログラミングを行なう際に必要となる基本的な知識・概念・機能から、C#4.0 の新機能まで、さまざまなサンプルプログラムを例示しながら詳細かつ丁寧に解説します。プログラミングの基礎知識がない方でも、解説→例題(サンプル)→理解度チェックという3つのステップで、C#の文法を完全習得できます。「一からC#言語を学びたい」という方におすすめの1冊です。

【原書タイトル】 C#:A Beginner's Guide


シリーズ75万部の信頼と実績
・- 世界中で読まれているハーバード・シルトのC#言語の標準教科書
・- 初心者がC#を学ぶにふさわしい一冊
・- C#でプログラミングを行う際に必要となる基本的な知識・概念・機能を網羅的かつ体系的に習得できる
はじめに
本書の構成
プログラミング経験は不要
必要なソフトウェア
コードのダウンロード
監修・改訂者のことば~第3版の発刊にあたり~

第1章 C#の基礎

1.1 C#の系統樹
  C:現代プログラミングの始まり
  OOPとC++の登場
  インターネットとJavaの登場
  C#の登場
1.2 C#の進化
1.3 C#と.NET Frameworkの関係
  .NET Frameworkとは
  共通言語ランタイムの仕組み
  マネージコードとアンマネージコード
  共通言語仕様
1.4 オブジェクト指向プログラミング
  カプセル化
  ポリモーフィズム
  継承
1.5 最初の簡単なプログラム
  C# 4.0コンパイラを入手する
  Visual StudioのIDEを使用する
  C#コマンドラインコンパイラcsc.exeを使う
1.6 最初のサンプルプログラムの各行について
1.7 構文エラーの処理
1.8 完全修飾名
1.9 変数の使用
1.10 double型
  例1-1 華氏を摂氏に変換する
1.11 2つの制御文
  if文
  forループ
1.12 コードブロックの使用
1.13 セミコロンと改行
1.14 字下げを行なう
  例1-2 温度を変換するプログラムを改良する
1.15 C#のキーワード
1.16 識別子
1.17 C#のクラスライブラリ
この章の理解度チェック

第2章 データ型と演算子

2.1 なぜデータ型が重要か
2.2 C#の値型
  整数型
2.3 浮動小数点数型
2.4 decimal型
2.5 文字表現
2.6 bool型
2.7 出力オプション
  例2-1 火星と会話する
2.8 リテラル
  16進数のリテラル
  エスケープシーケンス
  文字列リテラル
2.9 変数を理解する
  変数を初期化する
  動的な初期化
  暗黙的に型指定されるローカル変数
2.10 変数のスコープとライフタイム
2.11 演算子
2.12 算術演算子
  インクリメントとデクリメント
2.13 関係演算子と論理演算子
  ショートサーキット評価を行なう短絡形の論理演算子
  例2-2 論理演算子の真偽表を表示させる
2.14 代入演算子
  複合代入
  代入時の型変換
2.15 データ型の明示的なキャスト
2.16 演算子の優先順位
2.17 式における型変換
2.18 スペースと括弧
  例2-3 ローンの返済額を計算する
この章の理解度チェック

第3章 プログラムの制御文

3.1 キーボードから文字を入力する
3.2 if文
  ifのネスト
  if-else-ifのハシゴ
3.3 switch文
  switch文のネスト
  例3-1 C#ヘルプシステムの最初のバージョンを作成する
3.4 forループ
  forループの変種
  項目を省略する
  無限ループ
  処理の中身のないループ
  ループ制御変数をforループ内で宣言する
3.5 whileループ
3.6 do-whileループ
  例3-2 C#ヘルプシステムを改良する
3.7 breakを使ってループから抜け出す
3.8 continueを使う
3.9 goto文
  例3-3 C#ヘルプシステムを完成させる
3.10 ループのネスト
この章の理解度チェック

第4章 クラス、オブジェクト、メソッドの基礎

4.1 クラスの基礎
  クラスの構文
  クラスを定義する
4.2 オブジェクトの生成方法
4.3 参照型の変数の代入
4.4 メソッド
  Vehicleクラスへメソッドを追加する
  メソッドからの復帰
  値を返して復帰する
  パラメーターを使う
  Vehicleクラスへパラメーターのあるメソッドを追加する
  例4-1 ヘルプクラスを作成する
4.5 コンストラクター
  パラメーターのあるコンストラクター
  Vehicleクラスへコンストラクターを追加する
4.6 new演算子
4.7 ガベージコレクションとデストラクター
  デストラクター
4.8 thisキーワード
この章の理解度チェック

第5章 その他のデータ型と演算子

5.1 配列
  1次元配列
  配列の初期化
  厳密な境界
  例5-1配列のソート
5.2 多次元配列
  2次元配列
  3次元以上の配列
  多次元配列の初期化
5.3 ジャグ配列
5.4 配列参照を代入する
5.5 配列のLengthプロパティを使う
5.6 暗黙的に型指定されるローカル配列を作成する
  例5-2キュークラス
5.7 foreachループ
5.8 string
  stringの作成
  stringを操作する
  stringの配列
  stringは不変
5.9 ビット演算子
  ビットごとのAND、OR、XOR、NOT演算子
  シフト演算子
  ビットごとの複合代入演算子
  例5-3 ShowBitsクラス
5.10 条件演算子
この章の理解度チェック

第6章 メソッドとクラスの詳細

6.1 クラスのメンバーへのアクセスを制御する
  C#のアクセス修飾子
  例6-1 SimpleQueueクラスを改良する
6.2 メソッドへオブジェクト参照を渡す
  引数の渡し方
6.3 参照パラメーターと出力パラメーター
  参照パラメーター
  出力パラメーター
6.4 可変長引数を使う
6.5 オブジェクトを返す
6.6 メソッドのオーバーロード
6.7 コンストラクターのオーバーロード
  オーバーロードされたコンストラクターをthisによって呼び出す
  例6-2 SimpleQueueクラスのコンストラクターのオーバーロード
6.8 Main( )メソッド
  Main( )から値を返す
  Main( )に引数を渡す
6.9 再帰
6.10 staticを理解する
6.11 静的コンストラクターと静的クラス
  例6-3 クイックソート
この章の理解度チェック

第7章 演算子のオーバーロード、インデクサー、プロパティ―

7.1 演算子のオーバーロード
  演算子メソッドの構文
  二項演算子のオーバーロード
  単項演算子のオーバーロード
  柔軟性を付加する
  関係演算子のオーバーロード
  演算子オーバーロードのヒントと制限
7.2 インデクサー
  多次元インデクサー
  インデックスの制限事項
7.3 プロパティ
  自動実装するプロパティ
  プロパティの制限
7.4 アクセサーにアクセス修飾子を付ける
  例7-1 Setクラスを作成する
この章の理解度チェック

第8章 継承

8.1 継承の基本
8.2 メンバーへのアクセスと継承
8.3 protectedメンバー
8.4 コンストラクターと継承
  基本クラスのコンストラクターの呼び出し
8.5 継承と名前の隠蔽
  隠蔽された名前にbaseを使ってアクセスする
  例8-1 Vehicleクラスを拡張する
8.6 多層階層を作成する
8.7 コンストラクターはいつ呼び出されるか?
8.8 基本クラスの参照と派生オブジェクト
8.9 仮想メソッドとオーバーライド
  メソッドをオーバーライドする理由
  仮想メソッドを適用する
8.10 抽象クラス
8.11 sealedを使って継承を防ぐ
8.12 objectクラス
  ボックス化とボックス化解除
この章の理解度チェック

第9章 インターフェイス、構造体、列挙型

9.1 インターフェイス
  インターフェイスの実装
9.2 インターフェイス参照を使用する
  例9-1 キューのインターフェイスを作成する
9.3 インターフェイスのプロパティ
9.4 インターフェイスのインデクサー
9.5 インターフェイスを継承する
9.6 明示的な実装
9.7 構造体
9.8 列挙型
  列挙型の値を指定する
  列挙型のベースとなる型を指定する
この章の理解度チェック

第10章 例外処理

10.1 System.Exceptionクラス
10.2 例外処理の基礎
  tryとcatchの使用
  例外の簡単な例(1)
  例外の簡単な例(2)
10.3 例外が捕捉されなかった場合の動作
10.4 例外処理後のプログラムの続行
10.5 複数のcatch句を使用する
10.6 すべての例外を捕捉する
10.7 tryブロックをネストする
10.8 例外を投げる
  例外を再度投げる
10.9 finallyを使用する
10.10 Exceptionクラス
  よく使う例外
10.11 Exceptionクラスの派生
10.12 例外の派生クラスの捕捉
  例10-1 SimpleQueueクラスへの例外の追加
10.13 checkedとuncheckedを使用する
この章の理解度チェック

第11章 I/O処理

11.1 ストリーム――C#のI/Oの基盤
  バイトストリームと文字ストリーム
  定義済みのストリーム
11.2 ストリーム関連のクラス
  Streamクラス
  バイトストリームクラス
  文字ストリームクラス
  バイナリストリーム
11.3 コンソールI/O
  コンソール入力の読み込み
  コンソール出力の書き込み
11.4 FileStreamとバイトベースのファイルI/O
  ファイルのオープンとクローズ
  FileStreamからのバイトデータの読み込み
  ファイルへの書き込み
11.5 文字ベースのファイルI/O
  StreamWriterの使い方
  StreamReaderの使い方
11.6 標準ストリームのリダイレクト
  例11-1 ファイル比較ユーティリティ
11.7 バイナリデータの読み書き
  BinaryWriter
  BinaryReader
  バイナリI/Oの例
11.8 ランダムアクセスファイル
11.9 数値を表わす文字列を数値型データに変換する方法
  例11-2 ディスクベースのヘルプシステム
この章の理解度チェック

第12章デリゲート、イベント、名前空間

12.1 デリゲート
  デリゲートを使用してインスタンスメソッドを呼び出す
  マルチキャスト
  デリゲートを使う理由
12.2 匿名メソッド
12.3 イベント
  マルチキャストイベントの例
  イベントハンドラーに匿名メソッドを使う
12.4 名前空間
  名前空間の宣言
  usingディレクティブ
  usingディレクティブのもう1つの形式
  名前空間の追加
  名前空間のネスト
  global名前空間
  例12-1 Setの名前空間への格納
この章の理解度チェック

第13章 ジェネリック

13.1 ジェネリックとは?
13.2 ジェネリックの基礎
  当てはめた型引数が異なる場合のジェネリック型の扱い
  ジェネリックによる型の安全性の向上
13.3 2つの型パラメーターを持つジェネリック
13.4 型パラメーターの制約
  基本クラス制約を使用する
  2つの型パラメーターの関係を確立する制約
  インターフェイス制約を使用する
  コンストラクター制約
  参照型制約と値型制約
  複数の制約を使用する
13.5 型パラメーターのデフォルト値を指定する
13.6 ジェネリック構造体
13.7 ジェネリックメソッド
  ジェネリックメソッド呼び出しに明示的な型の実引数を使う
  ジェネリックメソッドの制約を使う
13.8 ジェネリックデリゲート
13.9 ジェネリックインターフェイス
  例13-1 ジェネリック対応のキューを作成する
この章の理解度チェック

第14章 LINQ

14.1 LINQとは?
14.2 LINQの基礎
  簡単なクエリ
  1つのクエリは複数回実行できる
  クエリに関連するデータ型
  クエリの構文の一般形
14.3 where句によるデータの絞り込み
14.4 orderby句によるクエリ結果の並べ替え
14.5 要素を表わすselect句のさまざまな使い方
14.6 group句によるクエリ結果のグループ化
14.7 intoによる継続
14.8 let句によるクエリ内の変数作成
14.9 join句による2つのシーケンスの結合
14.10 匿名型とオブジェクト初期化子
14.11 グループ結合の作成
14.12 クエリメソッドとラムダ式
  基本的なクエリメソッド
  ラムダ式
  クエリメソッドを使用してクエリを作成する
  その他のクエリ関連の拡張メソッド
  遅延実行と即時実行
14.13 拡張メソッドの詳細
14.14 ラムダ式の詳細
  式形式のラムダ
  ステートメント形式のラムダ
  例14-1 イベントハンドラーの実装にラムダ式を使用する
この章の理解度チェック

第15章 プリプロセッサ、実行時の型の識別、null許容型、高度なトピック

15.1 プリプロセッサ
  #define
  #ifと#endif
  #elseと#elif
  #undef
  #error
  #warning
  #line
  #regionと#endregion
  #pragma
15.2 実行時の型の識別
  is演算子による型チェック
  as演算子の使用
  typeof演算子の使用
15.3 null許容型
  ??演算子
  null許容型での関係演算子と論理演算子の利用
15.4 unsafeコード
  ポインターの概要
  unsafeキーワード
  fixedの使用
15.5 属性
  Conditional属性
  Obsolete属性
15.6 変換演算子
15.7 コレクション
  コレクションの基礎
  コレクションの使用例――動的に要素数が変化する配列の作成
  例15-1 Queueコレクションを使用する
15.8 その他のキーワード
  internalアクセス修飾子
  sizeof
  lock
  readonly
  stackalloc
  using文
  constとvolatile
  partial修飾子
  yield
  extern
この章の理解度チェック

第16章 C# 4.0の新機能

16.1 名前付き引数と省略可能な引数
  名前付き引数
  省略可能な引数
  名前付き引数と省略可能な引数の併用例
16.2 dynamic型の基本
  dynamic型の基本的な記述方法と機能
  事前バインディングと動的バインディング
  C#におけるdynamic型の位置づけ
16.3 動的オブジェクトとdynamic型の利用
  コレクションを使用して動的構造を扱う
  dynamic型と動的オブジェクトを使用して動的構造を扱う
16.4 リフレクションにおけるdynamic型の利用
16.5 [予備知識①]デリゲートの型変換の再確認
  デリゲートの型変換の互換性
16.6 [予備知識②]C# 2.0におけるデリゲートの共変性と反変性
  デリゲートの共変性と反変性の例
16.7 ジェネリックの共変性と反変性①(ジェネリックデリゲートの場合)
  ジェネリックデリゲートの型パラメーターの共変性と反変性
16.8 ジェネリックの共変性と反変性②(ジェネリックインターフェイスの場合)
  ジェネリックインターフェイスの型パラメーターの共変性と反変性
16.9 今後の学習
この章の理解度チェック
付録A 「この章の理解度チェック」解答

付属データはこちら

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2015年08月18日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 062
サンプルコードの下から7~14行目
4刷
Console.WriteLine(msg2 + radius); area = pi * radius * radius; Console.WriteLine(msg + area);     ・     ・     ・ Console.WriteLine(msg2 + radius); area = pi * radius * radius; Console.WriteLine(msg + area);
Console.WriteLine(msg + radius); area = pi * radius * radius; Console.WriteLine(msg2 + area);     ・     ・     ・ Console.WriteLine(msg + radius); area = pi * radius * radius; Console.WriteLine(msg2 + area);

WriteLineメソッドの引数msgとmsg2の位置が逆です。4か所あります。
2012.10.09
1刷 062
プログラムの実行結果
5刷
Area : 10 Radius : 314.12 Area : 12 Radius : 452.3904
Radius: 10 Area: 314.16 Radius: 12 Area: 452.3904

「Area」と「Radius」が逆になっていました。
2013.06.11
1刷 219
リスト部分の上から8行目と10行目のメッセージストリングの指定部分(2か所)
5刷
e.msg
e.Msg
2014.01.06
1刷 263
ページ下部、コードの下から6行目および11行目
4刷
fs.Errflag
fs.ErrFlag

flagのfは大文字(F)
2012.11.07
1刷 264
ページ上部、コードの2~3行目
4刷
Fail quietyly. 0 10 20 30 40 0 0 0 0 0
Fail quietyly. 0 10 20 30 40
2012.11.07
1刷 268
小見出し
2刷
インデックスの制限事項
インデクサーの制限事項
2010.12.03
1刷 268
ページ上部、コードの2行目
4刷
Fail quietly. 0 10 20 0 0 0
Fail quietly. 0 10 20
2012.11.09
1刷 292
コードの10行目
4刷
set { pri_width = value; }
set { pri_width = value < 0 ? -value : value; }
2012.11.06
1刷 292
コードの14行目
4刷
set { pri_height = value; }
set { pri_height = value < 0 ? -value : value; }
2012.11.06
1刷 297
本文、下から2行目
4刷
Weightプロパティ
Heightプロパティ
2012.09.27
1刷 406
冒頭のコード 5行目
4刷
catch(FileNotFoundException exc) {
catch(IOException exc) {
2012.11.06
1刷 407
下から3行目
4刷
int型からchar型へ暗黙的な型変換を行っています。
int型からchar型へ明示的な型変換を行っています。
2012.11.06
1刷 418
コード、下から10行目
7刷
Console.WriteLine("Usage: ComFiles F1 F2");
Console.WriteLine("Usage: CompFiles F1 F2");
2015.07.28
1刷 440
前ページから続くコード、下から5行目
7刷
strOp = Reserve;
strOp = Reverse;
2015.06.08
1刷 444
コード、下から17~16行目
7刷
StrMod replaceSp = ReplaceSpace; StrMod removeSp = RemoveSpace;
StrMod replaceSp = ReplaceSpaces; StrMod removeSp = RemoveSpaces;
2015.07.28
1刷 496
「エキスパートに訊く」内のコード
7刷
SomeClass<string, bool> someObj =
new SomeClass<string, boo>("testing", false);
これは次のように記述できます。
var someObj = new SomeClass<string, boo>("testing", false);
SomeClass<string, bool> someObj =
new SomeClass<string, bool>("testing", false);
これは次のように記述できます。
var someObj = new SomeClass<string, bool>("testing", false);
2015.06.08
1刷 503
「13.9 ジェネリックインターフェイス」のコード、下から3行目
7刷
public T GetY() { return X; }
public T GetY() { return Y; }
2015.07.16
1刷 504
下から8行目
7刷
The X,Y values in xyObj: 10, 10
The X,Y values in xyObj: 10, 20
2015.07.16
1刷 519
下から13~14行目
4刷
配列変数である変数nには
範囲変数である変数nには
2012.11.09
1刷 535
下から14行目(途中のコードは含みません)
5刷
ここでのクエリ操作では、order句とselect句
ここでのクエリ操作では、orderby句とselect句
2012.12.05
1刷 546
表、「クエリのキーワード」3行目
5刷
order
orderby
2012.12.05
1刷 549
ページ下部のコード、下から2行目の末尾
5刷
!= 1).
!= -1).
2012.12.05
1刷 595
表、「メソッド」1行目
2刷
int InexOf(T obj)
int IndexOf(T obj)
2010.12.03
1刷 616
ページ中央のコード、下から5行目
5刷
currentIndex <= array.Length; currentIndex++)
currentIndex < array.Length; currentIndex++)

「=」は不要
2012.12.28
1刷 618
コード、下から7行目
5刷
for(int currentIndex=startIndex; currentIndex <= array.Length;
for(int currentIndex=startIndex; currentIndex < array.Length; 

「currentIndex <= array.Length;」の「=」は不要。
2012.12.28
1刷 619
ページ下のコード、6~7行目
5刷
result = CalcPayment(principal: 1000000.0m, years: 5,               payPerYear: 6, rate: 0.075m);
result = CalcPayment(1000000.0m, 0.075m, 12.0m, 5.0m);
2012.12.28
1刷 656
理解度チェック17 11行目、14行目
8刷
11行目・・・ Updatedイベントの引数はobject型およびStatus1型、 14行目・・・ Modifiedイベントの引数はobject型およびStatus2型、
11行目・・・ Updatedイベントの引数はobject型およびStatusEx1型、 14行目・・・ Modifiedイベントの引数はobject型およびStatusEx2型、
2015.08.18
1刷 xii
第7章、7.2節の2つ目の小見出し
2刷
インデックスの制限事項
インデクサーの制限事項
2010.12.03
2刷 153
コード、下から7行目
4刷
" power is " + GetPwr());
" power is " + x.GetPwr());
2012.08.03
2刷 522
本文1つ目の段落の下にあるコード
4刷
var posNums = from int n nums // ・・・
var posNums = from int n in nums // ・・・
2012.08.03

感想・レビュー

アロゲロゲ さん

2019-02-03

C♯の絵本で感覚は掴めたので、チャレンジするかと読み始めたが600ページ超で骨太だったため読むのに時間がかかりすぎた。時々?となることはあったけど概ね理解しやすいし例題演習問題のレベルも相応で有名なだけはあるなーと思った。Pythonの本でわからなかったことがこれ読んでてわかったりしてよかった。しかしフォレスト読んでも英語書けるようにはならないように、これ読んでもすぐコード書けるわけでも無いんだなこれが。Codewarsで鍛えるかなー。リーダブルコード読み返したい。

d(^0゚)/b さん

2016-08-14

例が豊富でよかった。手を動かしながら覚えられる構成になってるのもよかった。でも100%理解できたわけじゃないからいずれ復習したい。復習よりも、C#で何か一つ作ってみたい。これをただ一通り読んだだけでは、なにがどう実践に生きるのかもよくわからんし、成果の確認のためにも。

kymmt90 さん

2015-08-26

仕事で C# を使いそうなので通し読み。基本的構文は Java と似ていたので、C# 特有の機能についての章(インデクサ/プロパティ、デリゲート、LINQ...)を中心に読んだ。機能の説明には具体的なコードがほぼ付いているので、その機能の使いかたや存在理由は十分把握できる。基礎的な知識を幅広く得られるので、Effective 系の本や GUI 開発など、次のステップへの足がかりとしやすいと思う。