问题描述
public Node? GetLastNode(bool createNewIfEmpty = false)
{
// Return last node if any
if (Nodes.Count > 0)
return Nodes[Nodes.Count - 1];
// Return a new appended node,if requested
if (createNewIfEmpty)
{
Nodes.Add(new Node());
return Nodes[0];
}
// Otherwise,return null
return null;
}
启用可为空引用类型的情况下,是否有任何属性(或其他方式)指定只要 createNewIfEmpty
参数为 true
,此方法从不返回 null?
解决方法
我不确定 NotNullIfNotNull
能否为您解决这个问题,但另一种方法是将方法一分为二,除非您有严格的要求从参数中控制它:
public Node? GetLastNode()
{
// Return last node if any. Otherwise,return null
return Nodes.Count > 0
? Nodes[^1]
: null;
}
public Node GetOrCreateLastNode()
{
// Add new node if the list is empty
if (Nodes.Count == 0)
Nodes.Add(new Node());
// Return the last node
return Nodes[^1];
}