6

ここに画像の説明を入力

上の画像では、Code Contracts からの警告を確認できます。私はこれが正当だとは思いませthisnull

これはバグですか、それとも何か不足していますか?


このプロパティは、次のクラスのメンバーです。

public class NHibernateIQueryableQueryBase<TEntity, TQuery, TQueryInterface>
    : IQuery<TEntity>, IFluentQueryInterface<TEntity, TQueryInterface>
    where TQuery : NHibernateIQueryableQueryBase<TEntity, TQuery,
                                                 TQueryInterface>,
                   TQueryInterface
    where TQueryInterface : IQuery<TEntity>

更新:
プロパティを次のように変更しても、依然として警告が表示されます - 行にreturn result;:

public TQueryInterface And
{
    get
    {
        var result = this as TQuery;
        return result;
    }
}
4

2 に答える 2

1

thisが実装されることが保証されていることを分析は理解していませんTQuery。したがって、インターフェイス型への参照を取得し、そのインターフェイスを実装する として返す
可能性があることを警告しています。nullstruct

: classパラメータの制約に追加する必要がありTQueryInterfaceます。

于 2012-11-08T17:24:30.373 に答える
0

この質問に基づいて、キャストが失敗した場合に何が起こるかを指定する必要があると思います。

キャストが失敗した場合、演算子はnullを返しますが、明示的なキャストはエラーをスローするreturn this as TQueryため、試してください。as

于 2012-11-07T16:47:15.110 に答える