中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

C#2.0詳説シリーズ その1公開

公開先:http://blogs.users.gr.jp/naka/articles/2267.aspx

C#2.0詳説シリーズはhttp://msdn.microsoft.com/vcsharp/team/language/のファイルを見ながら解説します。
開発中のVisualStudio2005の画面も出しながら解説していきます。

今度VisualStudio2005でC#の改定が行われます。その改定の内容は主に以下の4つ

  • Generics
  • Anonymous methods
  • Iterators
  • PartialType
Genericsとは大雑把に言うとobjectを引数にとるArrayList等をImage専用ArrayListにしたりすることができるものといえます。いままで何が入っても良いクラスとなると
Public class Stack
{
  objrct[] items;
  int count;
  public void Push(object item){...}
  public object Pop(){...}
}

この場合でPopメソッドを利用して取り出す場合にobject型が帰ってきます。 object型のままでは利用できませんから必然的にキャストして利用することになります。

Stack stack = new Stack()
stack.Push(3);
int x = (int)stack.pop();

キャストしているということは、全然違うキャストをすることすら可能ということです。

Stack stack = new Stack()
stack.Push("Hello .NetFramework1.1");
int x = (int)stack.pop();

これもコンパイルはとおります。なぜなら取り出した値がintに変換可能かどうかはわからないからです。

そこで登場するのがGenericsです。

このGenericsコンパイル時に型を決め打ちすることができるのです。

Stack<int> stack = new Stack<int>()
stack.Push(3);
int x = (int)stack.pop();
Stack<int> stack = new Stack<int>()
stack.Push("Hello .NetFramework2.0");    //コンパイルエラー
int x = (int)stack.pop();

すべてがGenericsできるわけではありません。上記のStackクラスを実際に作るとどうなるかを見ていきましょう。

投稿日時 : 2004年5月6日 12:56

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント