genericに関するdotsargのブックマーク (9)

  • コレクション内での比較と並べ替え - .NET

    System.Collections クラスは、削除する要素を検索するか、キーと値のペアの値を返すかに関係なく、コレクションの管理に関連するほぼすべての処理において比較を実行します。 通常、コレクションは等値比較子か順序比較子、またはその両方を使用します。 比較には 2 つのコンストラクターが使用されます。 等しいかどうかの確認 Contains、 IndexOf、 LastIndexOf、 Remove などのメソッドは、コレクション要素に対して等値比較子を使用します。 コレクションがジェネリックの場合、次のガイドラインに従ってアイテムの等価性が比較されます。 T 型で IEquatable<T> ジェネリック インターフェイスが実装されている場合、等値比較子はそのインターフェイスの Equals メソッドです。 T 型で IEquatable<T>が実装されていない場合、 Object

    コレクション内での比較と並べ替え - .NET
  • Immutableなモノたち - Qiita

    どーいうことだってばよ? 2016/07/26は雨が降って、自転車に乗れなかったのでむしゃくしゃしてやった。後悔はしていない。 System.Collections.Immutableを簡単にまとめていこうかなって。 どこから取れるの? System.Collections.Immutable このあたりから落としてくれば良いかと。ただ、VisualStudio使ってるなら、Nugetでさくっと落としてきた方が楽です、えぇ。 Mutableなモノたち 普段、一般的に使っているList<T>や、配列はImmutableでは無いので、以下のような操作をした結果、操作したインスタンスの状態が変化する。 using System; using System.Collections.Generic; namespace ConsoleApplication1 { class Program { st

    Immutableなモノたち - Qiita
    dotsarg
    dotsarg 2017/08/17
    C# で変更不可能なコレクションを実現するクラス。
  • 汎用ジェネリックコレクション その2 ObservableCollection/ReadOnlyObservableCollection (System.Collections.ObjectModel) - smdn.jp

    汎用ジェネリックコレクション ページ一覧汎用ジェネリックコレクション汎用ジェネリックコレクション(1) Collection/ReadOnlyCollection汎用ジェネリックコレクション(2) ObservableCollection/ReadOnlyObservableCollection汎用ジェネリックコレクション(3) KeyedCollection System.Collections.ObjectModel.ObservableCollectionクラスは、コレクションに対する挿入・削除・設定を行った際にそれらの変更をクラス外部にイベントとして通知することができるようになっているクラスです。 ObservableCollectionクラスは、ユーザーインターフェイスとコレクションの同期したい場合などに使用されます。 ObservableCollectionクラス自体はColl

    汎用ジェネリックコレクション その2 ObservableCollection/ReadOnlyObservableCollection (System.Collections.ObjectModel) - smdn.jp
  • 【C#】ジェネリック引数付きコンストラクタ - 浮遊島

    C#では テンプレート型のコンストラクタに引数が渡せません using System; public class Foo<T> where T : new() { public Foo() { new T(1); } } `T': cannot provide arguments when creating an instance of a variable type 詳細:Compiler Error CS0417 Type.GetConstructor 使用すれば解決可能です using System; public static class Generic { public static T Construct<T,P1>(P1 p1) { return (T)typeof(T).GetConstructor(new Type[]{typeof(P1)}).Invoke(new ob

    【C#】ジェネリック引数付きコンストラクタ - 浮遊島
  • boost::fusion::vectorで異なる型のコンテナ - C++と色々

    動的な多態性を持った型のオブジェクトをコンテナで扱いたい場合、基クラスの参照型または基クラスのポインタ型のコンテナを使うことができます: #include <iostream> #include <memory> #include <vector> struct A { void disp() const { do_disp(); } private: virtual void do_disp() const = 0; }; class B : public A { void do_disp() const override { std::cout << "B\n"; } }; int main() { std::vector<std::shared_ptr<A>> v; v.emplace_back(std::make_shared<B>()); for (auto const& a

    boost::fusion::vectorで異なる型のコンテナ - C++と色々
  • generic関数内で型の変換方法について: DOBON.NETプログラミング掲示板過去ログ

    題名: generic関数内で型の変換方法について 著者: あーしゃん 日時: 2010/12/30 13:21:08 ID: 27918 この記事の返信元: (なし) この記事への返信: [27919] Re[1]: generic関数内で型の変換方法について shu 2010/12/30 14:52:34 [27920] Re[1]: generic関数内で型の変換方法について よねKEN 2010/12/30 15:26:01 [27922] Re[1]: generic関数内で型の変換方法について 魔界の仮面弁士 2010/12/30 19:21:18 ツリーを表示 環境/言語:[XP, C#] 分類:[.NET] お世話になります。 generic関数を作り、その中で指定した型への型変換を実施したいのですが、どのようにすればいいでしょうか。 以下のようなイメージです。 void

    dotsarg
    dotsarg 2015/06/09
    Microsoft.VisualBasic.CompilerServices.Conversions.ToGenericParameter メソッドを使用するのが一番スマートかと思われる。
  • ジェネリクスの共変性・反変性(C# によるプログラミング入門)

    概要 Ver. 4.0 C# 4.0 で、ジェネリクスの型引数に共変性・反変性を持たせることが可能になりました。 (共変性・反変性という言葉の意味は「covariance と contravariance」参照。) ジェネリックの共変性・反変性 ジェネリクスの共変性・反変性というものがどういうものかというのを説明する前に、まず背景を。 ジェネリックコレクションに関して、昔から以下のようなことをしたいという要望がありました。 List<string> strings = {"aa", "bb", "cc"}; List<object> objs = strings; これを認めてしまうと何がまずいかというと、 以下のような不正な値の書き換えが起こり得る。 // strings と objs は同じオブジェクト objs[0] = 5; // int に書き換えられたらまずい string s

    ジェネリクスの共変性・反変性(C# によるプログラミング入門)
  • ジェネリックと属性 (C# プログラミング ガイド)

    属性は、非ジェネリック型と同じ方法でジェネリック型に適用できます。 属性の適用の詳細については、「属性 (C# および Visual Basic)」を参照してください。 カスタム属性は、オープン ジェネリック型のみを参照できます。オープン ジェネリック型は、型引数が与えられていないジェネリック型です。クローズ構築ジェネリック型は、すべての型パラメーターに引数が与えられています。 次の例では、このカスタム属性を使用しています。 class CustomAttribute : System.Attribute { public System.Object info; } 属性は、次のようにオープン ジェネリック型を参照できます。 public class GenericClass1<T> { } [CustomAttribute(info = typeof(GenericClass1<>))]

    ジェネリックと属性 (C# プログラミング ガイド)
  • ジェネリック型の型パラメーター (C# プログラミング ガイド)

    ジェネリック型またはジェネリック メソッドの定義では、型パラメーターは、ジェネリック型の変数をインスタンス化するときにクライアントが指定する、特定の型のプレースホルダーです。 「ジェネリックの概要 (C# プログラミング ガイド)」に紹介されている GenericList<T> などのジェネリック クラスは、実際のところ型ではなく、型の設計図のようなものなので、そのままでは使用できません。 GenericList<T> を使用するには、クライアント コードで、山かっこ内に型の引数を指定して構築型を宣言し、インスタンス化する必要があります。 この特定クラスの型の引数には、コンパイラで認識される任意の型を使用できます。 構築型のインスタンスはいくつでも作成できます。また、それぞれに対して、次のように異なる型の引数を使用できます。 GenericList<float> list1 = new G

    ジェネリック型の型パラメーター (C# プログラミング ガイド)
  • 1