我想写一个这样的方法。但是,该语言不喜欢T obj = null方法参数中的 。它也不喜欢obj == null。我试过T : object T : INullable无济于事。有什么办法可以让 C# 接受这个吗?
public virtual static async Task<T> Get<T>(T obj = null) where T : struct
{
if (obj == null)
{
// Do stuff
}
else
{
// Do other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
要将null值用作默认值,您应该应用where T : class 通用约束。甚至可以Get<T>(T obj = default)无限制地使用(如果default文字和 C# 7.1 可用)。
如果您仍然需要Tas 值类型(和struct常量),只需将方法声明为Get<T>(T? obj = null) where T : struct. T?在这种情况下意味着Nullable<T>结构