第 1 回 言語の特性とパターン (鵜呑みは厳禁、Java のデザイン・パターン!)
世の中にある多くのデザイン・パターンに関する書籍は Java を前提として書かれています。文法も完全に同じではないので、記述が似ていてもコンパイルが通らないといった場合もあります。
1/29 金曜日
世の中にある多くのデザイン・パターンに関する書籍は Java を前提として書かれています。文法も完全に同じではないので、記述が似ていてもコンパイルが通らないといった場合もあります。
1/29 金曜日
第 2 回 静的 (static) なクラスとその意義
クラスとは、いわば設計図です。クラスをインスタンス化することで、設計図は実体になります。実体にする方法は、主に new 演算子です。new は極めて強力な機能であり、そのクラスが見えていれば設計図はいくらでも実体になります。
1/29 金曜日
クラスとは、いわば設計図です。クラスをインスタンス化することで、設計図は実体になります。実体にする方法は、主に new 演算子です。new は極めて強力な機能であり、そのクラスが見えていれば設計図はいくらでも実体になります。
1/29 金曜日
第 3 回 さまざまな型変換 (キャストの話)
C# には、表現可能な「精度」、つまり桁数が異なるデータ型がいろいろあります。例えば、「sbyte 型は 127 までの数値しか表現できませんが、short は 32767 まで表現できます」といった具合です。
1/29 金曜日
C# には、表現可能な「精度」、つまり桁数が異なるデータ型がいろいろあります。例えば、「sbyte 型は 127 までの数値しか表現できませんが、short は 32767 まで表現できます」といった具合です。
1/29 金曜日
第 4 回 型について知ろう (decimal と double/float の違い)
プログラムで使用する型は様々です。大きく分けると以下の種類に分かれます。自分で定義したり、ライブラリが提供する構造体やクラス等、プログラムを示すデリゲート型、文字列を示す string 型、数値を扱う数値型。この中で、特に数値型は種類が多く、充実しています。
1/29 金曜日
プログラムで使用する型は様々です。大きく分けると以下の種類に分かれます。自分で定義したり、ライブラリが提供する構造体やクラス等、プログラムを示すデリゲート型、文字列を示す string 型、数値を扱う数値型。この中で、特に数値型は種類が多く、充実しています。
1/29 金曜日
第 5 回 フィールド (メンバ変数) とプロパティはここが違う
プロパティという機能は、C# が誕生する以前から使用されてきました。では、なぜプロパティという機能が生まれたのでしょうか? それは、カーソルを「待て (WAIT)」を表す砂時計などに変更するコードを見れば明らかでしょう。
2/5 金曜日
プロパティという機能は、C# が誕生する以前から使用されてきました。では、なぜプロパティという機能が生まれたのでしょうか? それは、カーソルを「待て (WAIT)」を表す砂時計などに変更するコードを見れば明らかでしょう。
2/5 金曜日
第 6 回 引数の省略と理解性の高い引数 (named/optional parameters)
昔から、C# における有効な書き方として、オーバーロードという方法がありました。これは、同じ名前のメソッドでも、引数の型や数が違っていれば複数のメソッドを同じ名前で記述できることを利用したものです。
2/8 月曜日
昔から、C# における有効な書き方として、オーバーロードという方法がありました。これは、同じ名前のメソッドでも、引数の型や数が違っていれば複数のメソッドを同じ名前で記述できることを利用したものです。
2/8 月曜日
第 7 回 null を受け入れるか? 排除するか? (null 許容型と null 合体演算子)
マーチン・ファウラーがその有名な著書「リファクタリング」で記載している「ヌル オブジェクトの導入」を使えば、必然的に null は排除されます。以下に、「なぜ null を排除したいのか」という観点も含め、この一例を説明しましょう。
2/12 金曜日
マーチン・ファウラーがその有名な著書「リファクタリング」で記載している「ヌル オブジェクトの導入」を使えば、必然的に null は排除されます。以下に、「なぜ null を排除したいのか」という観点も含め、この一例を説明しましょう。
2/12 金曜日
第 9 回 COM と 64 ビットへの対応
値渡しを基本とする C# の世界と、参照渡しを多用する従来からの COM の世界の垣根も低くなり、C# のプログラムから Microsoft Word などの従来型ソフトを操作することも極めて容易になっています。しかし、いくら簡単に呼び出せるとはいえ、COM の世界は基本的に外部に存在する異質な世界です。ちょっとした拍子に、その差異が浮き彫りになることもります。
2/19 金曜日
値渡しを基本とする C# の世界と、参照渡しを多用する従来からの COM の世界の垣根も低くなり、C# のプログラムから Microsoft Word などの従来型ソフトを操作することも極めて容易になっています。しかし、いくら簡単に呼び出せるとはいえ、COM の世界は基本的に外部に存在する異質な世界です。ちょっとした拍子に、その差異が浮き彫りになることもります。
2/19 金曜日
第 11 回 共変性 (covariance) と反変性 (contravariance)
ご存じの通り、継承やインターフェイスの実装により、型に新しい特性を追加できます。このとき、そのオブジェクトは、別のクラスやインターフェイスの特質も持ちます。
2/26 金曜日
ご存じの通り、継承やインターフェイスの実装により、型に新しい特性を追加できます。このとき、そのオブジェクトは、別のクラスやインターフェイスの特質も持ちます。
2/26 金曜日
第 12 回 スレッド プールと Web アプリの問題
スレッドを毎回作成する方法はスレッドが少数であれば上手く行きます。しかし、オブジェクトの生成と解放は数が多くなると負担が重くなります。その場合は、スレッドをいちいち生成するのではなく、プールされたスレッドを借りるという方法を使います。
3/1 月曜日
スレッドを毎回作成する方法はスレッドが少数であれば上手く行きます。しかし、オブジェクトの生成と解放は数が多くなると負担が重くなります。その場合は、スレッドをいちいち生成するのではなく、プールされたスレッドを借りるという方法を使います。
3/1 月曜日
第 13 回 名前空間とモジュールの分割 (using,extern)
名前空間は名前の衝突を回避するために使用されます。例えば、以下のプログラムはコンパイルできません。X.SayMyName メソッドが 2 つ存在し、どちらを呼び出して良いかが決まらないからです。
3/5 金曜日
名前空間は名前の衝突を回避するために使用されます。例えば、以下のプログラムはコンパイルできません。X.SayMyName メソッドが 2 つ存在し、どちらを呼び出して良いかが決まらないからです。
3/5 金曜日
第 14 回 属性 (Attribute) の使用
属性は、その属性を扱うプログラムに対する一種のメタデータです。このあと見ていきますが、基本的には、C# の言語そのものやコンパイラの外部でクラスとして定義されおり、どこかのプログラムでその内容が読み出されています。
3/12 金曜日
属性は、その属性を扱うプログラムに対する一種のメタデータです。このあと見ていきますが、基本的には、C# の言語そのものやコンパイラの外部でクラスとして定義されおり、どこかのプログラムでその内容が読み出されています。
3/12 金曜日
第 15 回 部分クラス (partial class) でクラスを分ける
partial を使って作成されたクラスについては、ツール (Visual Studio のデザイナーなど) に任せて変更をおこなうべきでしょう。
3/19 金曜日
partial を使って作成されたクラスについては、ツール (Visual Studio のデザイナーなど) に任せて変更をおこなうべきでしょう。
3/19 金曜日
第 16 回 リフレクション (Reflection) を活用する
C# を使ってプログラムでアセンブリを列挙するだけなら簡単です。AppDomain.CurrentDomain.GetAssemblies メソッドを使用するだけです。特に準備なども必要ありません。
3/26 金曜日
C# を使ってプログラムでアセンブリを列挙するだけなら簡単です。AppDomain.CurrentDomain.GetAssemblies メソッドを使用するだけです。特に準備なども必要ありません。
3/26 金曜日
第 17 回 動的にアセンブリをロードする
使用するライブラリを実行時に動的に解決するというのは、.NET では、実は、それほど難しくありません。アプリケーション ドメインに新しいライブラリを動的に読み込むメソッドがもともと存在しています。
4/2 金曜日
使用するライブラリを実行時に動的に解決するというのは、.NET では、実は、それほど難しくありません。アプリケーション ドメインに新しいライブラリを動的に読み込むメソッドがもともと存在しています。
4/2 金曜日
第 20 回 LINQ の基本を理解しよう (LINQ という式/LINQ というメソッド)
LINQ のクエリ式を用いて、コレクションから指定された条件の項目だけを抽出する方法は簡単です。
4/23 金曜日
LINQ のクエリ式を用いて、コレクションから指定された条件の項目だけを抽出する方法は簡単です。
4/23 金曜日
第 22 回 LINQ to XML で楽々 XML 文書処理
LINQ to XML という技術は、単にクエリ式で XML を使えるというだけではなく全体として XML を使いやすくしてくれるクラスライブラリです。
5/14 金曜日
LINQ to XML という技術は、単にクエリ式で XML を使えるというだけではなく全体として XML を使いやすくしてくれるクラスライブラリです。
5/14 金曜日
第 25 回 yield return と LINQ
「列挙」は重要な機能です。というのは、あるオブジェクトが持っている情報が 1 つきりということはなく、列挙できる複数の情報は foreach 文で処理できると便利だからです。
6/4 金曜日
「列挙」は重要な機能です。というのは、あるオブジェクトが持っている情報が 1 つきりということはなく、列挙できる複数の情報は foreach 文で処理できると便利だからです。
6/4 金曜日
第 26 回 遅延実行とレイジー評価
処理の実行を必要とされるまで遅らせることを「遅延実行」と呼び、そのように遅らされた処理によって式を評価することを「レイジー評価 (Lazy Evaluation)」と呼びます。
6/11 金曜日
処理の実行を必要とされるまで遅らせることを「遅延実行」と呼び、そのように遅らされた処理によって式を評価することを「レイジー評価 (Lazy Evaluation)」と呼びます。
6/11 金曜日
第 27 回 enum を賢く使いこなそう
世の中には数値でも文字列でもなく、日付や時刻でもない情報があります。このような場合は列挙型を使います。列挙型は、有限の個数の名前を並べたデータ型です。数値にも文字列にも馴染まないが、列挙型で上手く表現できるデータは現実世界に多く、頻繁に使用されます。
6/18 金曜日
世の中には数値でも文字列でもなく、日付や時刻でもない情報があります。このような場合は列挙型を使います。列挙型は、有限の個数の名前を並べたデータ型です。数値にも文字列にも馴染まないが、列挙型で上手く表現できるデータは現実世界に多く、頻繁に使用されます。
6/18 金曜日
第 28 回 動的言語との相互運用 (Python の例)
dynamic 型は、単に名前の無い型を扱いやすくするだけでなく、動的な言語との相互運用における面倒な手順を大幅に簡素化してくれます。
6/25 金曜日
dynamic 型は、単に名前の無い型を扱いやすくするだけでなく、動的な言語との相互運用における面倒な手順を大幅に簡素化してくれます。
6/25 金曜日
第 29 回 動的 (dynamic) と静的の使い分け
「動的」な表現 (dynamic) を活用することで、大きくコードの可読性を改善させるような場面もあります。「静的」な表現と「動的」な表現は、こうしたメリットを把握した上で、使い分けると良いでしょう。
7/2 金曜日
「動的」な表現 (dynamic) を活用することで、大きくコードの可読性を改善させるような場面もあります。「静的」な表現と「動的」な表現は、こうしたメリットを把握した上で、使い分けると良いでしょう。
7/2 金曜日
第 30 回 DynamicObject から継承した独自の dynamic クラス
今回は、DynamicObject クラスを使って、dynamic 型で扱える動的なオブジェクトを自作してみましょう。
7/9 金曜日
今回は、DynamicObject クラスを使って、dynamic 型で扱える動的なオブジェクトを自作してみましょう。
7/9 金曜日
第 31 回 ExpandoObject を使用したアクション (メソッド) の実行時実装
今回は、もっと手軽に動的なプログラミングを行える ExpandoObject を紹介します。
7/16 金曜日
今回は、もっと手軽に動的なプログラミングを行える ExpandoObject を紹介します。
7/16 金曜日
第 32 回 並列 (Parallel) で行こう
バックグラウンドで実行させたいコードがある場合、.NET Framework 4.0 以降 (Visual Studio 2010 以降) になると、もっと簡単に記述できるようになります。
7/23 金曜日
バックグラウンドで実行させたいコードがある場合、.NET Framework 4.0 以降 (Visual Studio 2010 以降) になると、もっと簡単に記述できるようになります。
7/23 金曜日
第 33 回 並列 LINQ (PLINQ)
LINQ は基本的に列挙を行うインターフェイスに対する拡張メソッドです。そのため、処理は列挙に対して逐次的に行われます。C# 4.0 (Visual Studio 2010) では、この動作を修正し、最初に要素の処理が終わるまで待たずに 2 番目の要素の処理を始めることができます。
7/30 金曜日
LINQ は基本的に列挙を行うインターフェイスに対する拡張メソッドです。そのため、処理は列挙に対して逐次的に行われます。C# 4.0 (Visual Studio 2010) では、この動作を修正し、最初に要素の処理が終わるまで待たずに 2 番目の要素の処理を始めることができます。
7/30 金曜日
第 34 回 (最終回) 並列処理のデバッグとプロファイリング
Visual Studio では従来からマルチスレッド対応のデバッグ機能を持ちますが、Visual Studio 2010 では、並列タスクというウィンドウを開くことができます。プロファイリングに関する支援も受けることができます。
8/6 金曜日
Visual Studio では従来からマルチスレッド対応のデバッグ機能を持ちますが、Visual Studio 2010 では、並列タスクというウィンドウを開くことができます。プロファイリングに関する支援も受けることができます。
8/6 金曜日
.jpg)
.jpg)
.jpg)
.gif)
.jpg)
ページのトップへ