1. ホーム >
  2. 書籍 >
  3. 独習C# 第3版

独習C# 第3版


監修

形式:
書籍
発売日:
ISBN:
9784798122205
価格:
本体3,800円+税
仕様:
B5変・704ページ
分類:
プログラミング(その他)

本書籍の他の形式を確認する

  • このエントリーをはてなブックマークに追加

初心者に最適の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 「この章の理解度チェック」解答
本書はダウンロードファイルの提供はございません。

書籍への問い合わせ

正誤表、追加情報をご確認の上、こちらよりお問い合わせください

書影の利用許諾について

本書籍に関する利用許諾申請はこちらになります

追加情報はありません。

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

ご購入刷数 最終更新日:2016年08月19日
発生刷 ページ数 改定刷 電子書籍改定 内容 登録日
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か所あります。
2014.01.06
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」が逆になっていました。
2014.01.06
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.12
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.12
1刷 268
7.2節の見出し
2刷 未定
インデックスの制限事項
インデクサーの制限事項
2012.08.03
1刷 268
ページ上部のコード、2行目
4刷 未定
Fail quietly.
0 10 20 0 0 0
Fail quietly.
0 10 20
2012.11.12
1刷 292
ページ下部、コードの10行目
4刷 未定
set { pri_width = value; }
set { pri_width = value < 0 ? -value : value; }
2012.11.12
1刷 292
ページ下部、コードの14行目
4刷 未定
set { pri_height = value; }
set { pri_height = value < 0 ? -value : value; }
2012.11.12
1刷 297
本文、下から2行目
4刷 未定
Weightプロパティ
Heightプロパティ
2012.11.12
1刷 406
冒頭のコード 5行目
4刷 未定
catch(FileNotFoundException exc) {
catch(IOException exc) {
2012.11.12
1刷 407
下から3行目
4刷 未定
int型からchar型へ暗黙的な型変換を行っています。
int型からchar型へ明示的な型変換を行っています。
2012.11.12
1刷 418
下から10行目
7刷 2015/09/25
底本7刷
Console.WriteLine("Usage: ComFiles F1 F2");
Console.WriteLine("Usage: CompFiles F1 F2");
2015.09.25
1刷 440
前ページから続く「簡単なデリケートの例」 下から5行目
7刷 2015/09/25
底本7刷
strOp = Reserve;
strOp = Reverse;
2015.09.25
1刷 444
「デリゲートの作成」の2~3行目(下から17~16行目)
7刷 2015/09/25
底本7刷
StrMod replaceSp = ReplaceSpace;
StrMod removeSp = RemoveSpace;
StrMod replaceSp = ReplaceSpaces;
StrMod removeSp = RemoveSpaces;
2015.09.25
1刷 496
「エキスパートに訊く」内のコード
7刷 2015/09/25
底本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.09.25
1刷 503
「13.9 ジェネリックインターフェイス」のコード 下から3行目
7刷 2015/09/25
底本7刷
public T GetY() { return X; }
public T GetY() { return Y; }
2015.09.25
1刷 504
下から8行目
7刷 2015/09/25
底本7刷
The X,Y values in xyObj: 10, 10
The X,Y values in xyObj: 10, 20
2015.09.25
1刷 519
下から13~14行目
4刷 未定
配列変数である変数nには
範囲変数である変数nには
2012.11.12
1刷 535
下から14行目
5刷 未定
ここでのクエリ操作では、order句とselect句
ここでのクエリ操作では、orderby句とselect句
2014.01.06
1刷 546
ページ上部の表、左項目4行目
5刷 未定
order
orderby
2014.01.06
1刷 549
ページ下部のコード、下から2行目の末尾
5刷 未定
!= 1).
!= -1).
2014.01.06
1刷 595
メソッドの表の1行目
2刷 未定
int InexOf(T obj)
int IndexOf(T obj)
2012.08.03
1刷 616
ページ中央、ソースリストの下から5行目
5刷 未定
currentIndex <= array.Length; currentIndex++)
currentIndex < array.Length currentIndex++)

=と;は不要
2014.01.06
1刷 618
ソースリスト下から7行目
5刷 未定
for(int currentIndex=startIndex; currentIndex <= array.Length;
for(int currentIndex=startIndex; currentIndex < array.Length

「currentIndex <= array.Length;」の=と;は不要。
2014.01.06
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);
2014.01.06
1刷 656
理解度チェック17 11行目、14行目
8刷 未定
11行目・・・
Updatedイベントの引数はobject型およびStatus1型、

14行目・・・
Modifiedイベントの引数はobject型およびStatus2型、
11行目・・・
Updatedイベントの引数はobject型およびStatusEx1型、

14行目・・・
Modifiedイベントの引数はobject型およびStatusEx2型、
2016.08.19
1刷 xii
第7章、7.2節の見出し
2刷 未定
インデックスの制限事項
インデクサーの制限事項
2012.08.03
2刷 153
コード行の下から7行目
4刷 未定
" power is " + GetPwr());
" power is " + x.GetPwr());
2012.11.12
2刷 522
本文10行目下のコード行
4刷 未定
var posNums = from int n nums
// ・・・
var posNums = from int n in nums
// ・・・
2012.11.12

関連書籍