読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

ジェネリッククラスで型指定をしつつ継承もする

C# 備忘録

ぱっと調べて見つからなかったので備忘録。

普通の継承

class Derived : Base

ジェネリック型パラメータの制約

class Derived<T> where T : Type, new()

両方

class Derived<T> : Base where T : Type, new()
構文
class Derived<T> : <ベースクラス名> where T : <制約>

サンプル

using System;
using System.Text;

namespace GenericsAndDerivedSample
{
    class Base
    {
        public void printBase()
        {
            Console.WriteLine( "Base.print" );
        }
    }

    class Type
    {
        public void printType()
        {
            Console.WriteLine( "Type.print" );
        }
    }

    class Derived<T> : Base where T : Type, new()
    {
        public T Type = new T();
    }

    class Program
    {
        static void Main( string[] args )
        {
            Derived<Type> derived = new Derived<Type>();
            derived.printBase();
            derived.Type.printType();
        }
    }
}
結果