1

メソッドの結果が特定のプロパティを尊重するように依頼する方法はありますか? そのような

interface MyInterface()
{
    int MyMethod(int a, int b);
    // i want that my int result is less then 10
}

この種の要求を定義で強制したい。出来ますか?

4

2 に答える 2

2

残念ながら、C# でインターフェイスを使用することはできません。インターフェイスの呼び出し元にこれを強制させるか、代わりに抽象クラスを使用することができます。

abstract class MybaseClass()
{
    protected virtual int MyMethodInternal(int a, int b){ //this method is not visible to the outside
     // implementors override this
    }

    public sealed int MyMethod(int a, int b){ // users call this method
    var res = MyMethodInternal(a,b);
    if(res < 10)
        throw new Exception("bad implementation!");
    }
}
于 2013-10-13T15:38:19.970 に答える
0

いいえ、それは不可能です。コントラクトは、そのような種類の制約を定義していません。

インターフェイスの制約はコンパイル時にチェックされます。一般に、関数の戻り値はコンパイラによって認識されません。

于 2013-10-13T15:35:24.240 に答える