我想检查一个方法的所有参数是否可为空。
例如:
public async Task<IActionResult> HierarchyOfRanking(sometype? orderByType)
{
}
对于 int? 可以通过以下方式进行检查:
paras.All(p => Nullable.GetUnderlyingType(p.ParameterType) != null)
但是,对于 string? 类型,它不起作用。我追踪发现,string? 的 ParameterType 不是 "string?" 而是 "string"。似乎对于所有引用类型(例如 string、user 等所有类), ? 只起到了一种注释的作用而不是语法符号。
例如,如果 a 是 int 类型, b 是 int? 类型,则 a = b 会导致错误。 但是如果 a 是 string 类型,b 是 string? 类型,则 a = b 只会引发警告。并且 string? 不被视为可空类型。typeof(string?) 会导致异常。
因此问题是:有办法检查以下方法的 orderByType 参数是否可空吗?谢谢。
public async Task<IActionResult> HierarchyOfRanking(string? orderByType)
{
}
?
会被删除。基本上,运行时看不到string?
和string
之间的区别。此功能仅用于编译时静态分析。 - theemee