タグ

ブックマーク / ufcpp.net (4)

  • ジェネリック

    概要 C# 2.0 で、 C++でいうところのテンプレート、一般にはジェネリック(ジェネリクス)などと呼ばれるものが実装されました。 (C++ のテンプレートとは少し仕様が異なりますが。) ジェネリック※(generics:総称性)、 あるいは、総称的プログラミング(generic programming)とも呼ばれますが、 この機能は、 さまざまな型に対応するために、型をパラメータとして与えて、その型に対応したクラスや関数を生成するもの機能です。 ポイント ジェネリック: 型だけ違って処理の内容が同じようなものを作るときに使う。 ジェネリッククラス:IComparable<T> { int CompareTo(T x, T y); } ジェネリックメソッド:T max<T>(T x, T y) { ... } ※genericsの訳語 英語だと、名詞では generics、形容詞が ge

    ジェネリック
  • 拡張メソッド(C# によるプログラミング入門)

    概要 拡張メソッドは、静的メソッドをインスタンスメソッドと同じ形式で呼び出せるようにできるものです。 すなわち、 今までなら、 int x = int.Parse("1"); と書いていたものを、 static class Extensions { public static int Parse(this string str) { return int.Parse(str); } } というような静的メソッドを用意することで、 以下のような構文で呼び出せるようになります。 int x = "1".Parse(); ポイント 拡張メソッド: 静的メソッドをインスタンスメソッドと同じ書式で呼び出せるようにすることで、 あたかもクラスに新しいメソッドを追加したかのように見せかける仕組みです。 単に、静的メソッドを後置き記法で呼び出せるようになっただけとも考えることができます。 定義側: 第1引

    拡張メソッド(C# によるプログラミング入門)
    clownboy-zuzu
    clownboy-zuzu 2009/04/19
    すでにあるクラスへのメソッドの追加をオーバーライドなどをせずに簡単にできる。
  • 列挙型(C# によるプログラミング入門)

    概要 C# では、列挙型(enumeration type)と呼ばれるものを利用することで、曜日などの特定の値しかとらないデータを表現することが出来ます。 ポイント 列挙型: 特定の値しか取らないようなもの(例えば曜日など)に対して使う型 enum DayOfWeek { Monday, Tuesday, ... } 列挙型とは 例えば、曜日は月・火・水・木・金・土・日の7つの値しか取りませんし、 英語の月は January, February, March, April, May, June, July, August, September, October, November, December の12個の値しか取りません。 その他にも、 飛行機の乗車クラス(エコノミー・ビジネス・ファースト)、 日の年号(明治・大正・昭和・平成)、 性別(男・女)など、特定の値しか取らないものはたく

    列挙型(C# によるプログラミング入門)
    clownboy-zuzu
    clownboy-zuzu 2009/04/19
    いつか使いこなしたい……
  • 式木(Expression Trees)

    実装上、ほとんどのものが、生成メソッドの名前と、NodeType 列挙子の名前はそろえてあるようです。 (条件演算子とメンバーアクセスだけ例外。 条件演算子は Expression.Condition で生成するけど、NodeType は Conditional。 メンバーアクセスは Expression.MakeMemberAccess で生成するけど、NodeType は MemberAccess。) 下準備 百聞は一見にしかずということで、 次節以降では、ラムダ式と式木の対応関係を実例を挙げて紹介していきます。 それに先立って、いくつか補助関数や変数を用意しておきます。 まず、Expression 型を作りやすくするために (型推論が働きやすくするために)、 以下のような補助関数を用意します。 static partial class Make { public static Exp

    式木(Expression Trees)
  • 1