5

私はこのような機能を持っています:

private T DeserializeStream<T>(Stream data) where T : IExtensible
    {
        try
        {
            var returnObject = Serializer.Deserialize<T>(data);
            return returnObject;
        }
        catch (Exception ex)
        {
            this.LoggerService.Log(this.AccountId, ex);
        }

        return null;
    }

return null;一部について文句を言うことを除いて、すべてが良いです

式タイプ「null」をタイプ「T」に変換できません

このような関数からnullを返すにはどうすればよいですか?

4

1 に答える 1

7

クラスである一般的な制約を追加できますT(構造は値型であり、できないためnull)。

private T DeserializeStream<T>(Stream data) where T : class, IExtensible

@mindandmedia がコメントしたように、別の方法はdefaultofTを返すことです。これにより、値型(Nullable<T>int32など)で機能できるようになります。

于 2012-07-21T20:57:55.160 に答える