【发布时间】:2019-08-28 11:45:09
【问题描述】:
对于作为 ASP.NET Core MVC 中 C# 8.0 一部分的可空引用类型,我几乎没有疑问:
当存在带有字符串参数的操作 (
public IActionResult Index(string message)) 时,如果未传递给操作,则参数仍可为空。这个问题的官方解决方案是什么?还需要检查null吗?-
当存在简单的可变模型时,如何正确修改为 NRT?例如 Scott Allen (https://odetocode.com/blogs/scott/archive/2019/08/07/think-twice-before-returning-null.aspx) 建议创建
NullUser。这是正确的吗?Maybe<T>声音也不适合 NRT。可变和不可变模型的官方解决方案是什么?public class User { public int UserId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public IEnumerable<Message> Messages { get; set; } } public class Message { public int MessageId { get; set; } public string Text { get; set; } } 现在我经常使用
FirstOrDefault来从集合中提取某些内容(并且在检查 null 之后)。集合不为空,但可以为空,现在当想要使用First时会抛出异常,这是不好的,因为它是一个操作,并且想要在不尝试 (https://softwareengineering.stackexchange.com/questions/387674/c-8-non-nullable-references-and-the-try-pattern) 和 try-catch 的情况下创建错误的响应。再次Maybe<T>听起来不是解决方案。这个问题的官方解决方案是什么?
我知道我不需要避免空值,而是希望将它们最小化并遵循 NRT,因为它听起来像未来之歌
【问题讨论】:
标签: c# asp.net-core c#-8.0 nullable-reference-types