連載:[完全版]究極のC#プログラミング

Chapter1 C# 3.0らしいプログラミングとは?

川俣 晶
2009/07/31


 本記事は、(株)技術評論社が発行する書籍『[完全版]究極のC#プログラミング ― 新スタイルによる実践的コーディング』から、許可を得て転載しています。
 同書籍は、もともと本フォーラムにて連載していた『C# 2.0入門』、『C# 3.0入門』の記事を整理統合し、加筆、修正されたものです。

  手元でまとめて読みたい方は、ぜひ書店などにてお買い求めください。

 【注意】本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

はじめに

 冒頭からあえて断言しよう。

 オブジェクト指向プログラミングに関する書籍やネットの情報の9割は間違いである。正確にいえば、根拠のないあやふやな思い込みが事実として書かれている。いわゆる“トンデモ”である。

 トンデモの最も典型的な特徴は、「クラス」によってプログラムのすべてを表現し、現実に存在する「もの」と「オブジェクト」を対応付けることですべてうまくいくという主張だろう。

 しかし、そのような主張がされてから軽く十年以上たったが、それがうまく機能したという話は聞かない。あたりまえである。すべての問題を解決するたった1つの手段は「銀の弾丸」と呼ばれるが、それは、存在しないものの代名詞だからである。

 では、本当に問題を解決してスムーズなプログラミングを可能とする手法や機能とは何だろうか? 答えは、「小回りが利いてフットワークの軽い気の利いた機能」、そして、「それらの機能を取り揃え、うまく組み合わせる方法」である。たった1つの万能の解決策は論理的にありえない以上、それが必然的な帰結である。

 さて、本書が扱うテーマは2つある。1つは、そのようなタイプのプログラミングに適したC# 3.0という言語の解説である。もう1つは、C# 3.0の個々の機能をどのように組み合わせればそれが達成できるのか、という“やり方”の説明である。機能だけわかっても、使い方がピンとこなければ宝の持ち腐れである。本書では特に、「その機能をどう使うのか」という点にできるだけ配慮している。

 本書の想定読者は、C# 1.xは知っているがC# 3.0は知らない、あるいはC# 2.0やC# 3.0に関してはすでに学んだが、その機能をどう使えばうまくプログラムが作成できるかがピンとこないプログラマーである。特に後者の方々にはぜひ読んでもらいたい。

 本書は、@IT(http://www.atmarkit.co.jp/)に掲載された『C# 2.0入門』、『C# 3.0入門』の記事を整理統合し、加筆、修正したものである。そのため、C# 1.xの機能に関する説明は含まれていないが、それについては、どのような入門書を見ていただいてもかまわない。

 それでは、C# 3.0のダイナミックな世界へ入って行こう。そこは、美辞麗句の能書きよりも、スムーズに書き下ろされるコードが満ち満ちた「論よりソース」の世界である。

2009年4月

川俣 晶


本書の位置づけ

 本書は、インターネット上の@ITに連載した『連載:C# 2.0入門』および『連載:C# 3.0入門』に加筆修正を行ったものである。これらは、同サイトで筆者が連載したC# 1.xを解説する『連載:改訂版 C#入門』の続編である。

 また、『連載:改訂版 C#入門』は、単行本『新プログラミング環境 C#がわかる+使える』(技術評論社刊)として出版されている。そのため、本書は同書の続編という位置付けにもなる。しかし、そのように、「C# 1.x → 2.0 →3.0」という一連の流れだからといって、本書を読むために『連載:改訂版 C#入門』や単行本『新プログラミング環境 C#がわかる+使える』を読まなければならないと考える必要はない。なぜなら、「C# 1.x」の解説と「2.0 → 3.0」の解説は、まったく異質な内容を含んでおり、連続してはいないからだ。

 本書を読むための基礎知識を得るためには、どのようなC#入門書を読んでもらってもかまわない。あなたが好きな本を選べばよい。本書は、そのような入門書がC# 3.0までカバーしていなかった読者のため、あるいはカバーしていてもそれだけでは「C# 3.0らしい書き方」がわからなかった読者のためのものである。

 

 INDEX
  [完全版]究極のC#プログラミング
  Chapter1 C# 3.0らしいプログラミングとは?
  1.はじめに/本書の位置づけ
    2.1.1 意外性あり? 本書で解説すること/C# 3.0の適用範囲/筆者の来歴
    3.1.2 C# 3.0らしいソースコードとは?
    4.1.3 コードの遅延実行という例
    5.1.4 インターフェースとの比較
    6.1.5 後退するクラスの立場
    7.1.6 クラスベースとプロトタイプベース
    8.1.7 クラスベースの問題点/【C#olumn】クラスの問題とは何か?
    9.1.8 JavaScriptとの相違点
    10.まとめ/【C#olumn】金のハンマーと銀の弾丸―クラス至上主義
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間