2

私はこの状況にあります:

public class FOO<T> where T : IBar
{
    private T _xxx;
    public Y(T xxx)
    {
        if (xxx == null) throw new ArgumentNullException("xxx");
        _xxx = xxx;
    }
}

public interface IBar 
{
    string XString { get; }
}

コンストラクターで、をチェックTしていnullます。コンパイラは、構造体によって実装される可能null性がある値型である可能性があるものをチェックしていることを正しく警告します。IBar

T参照型になるように制約するにはどうすればよいですか?

4

1 に答える 1

5

典型的な神話(私が以前に得たものでさえ)は、インターフェースから派生した型は暗黙的に参照型であるというものですが、実際にはそうではありません。Structにはインターフェイスもあります。

classしたがって、参照型として示す制約をさらに追加する必要があります

public class FOO<T> where T : class, IBar
于 2013-03-08T08:23:54.510 に答える