在这里,行return session.Dictionary.ContainsKey(SessionId)必须能够返回true和false的值。我知道我在本例中使用的if语句要求所有代码路径都返回值,这对于我创建的处理SessionId是null字符串的函数来说是有问题的,因为如果我返回值true或false,它可能会干扰代码,并允许null值通过。有没有更好的方法来处理异常,或者这种方法可以工作?
private bool sessionExists(string SessionId)
{
if(!nullExceptionHandler(SessionId)
{
return sessionDictionary.ContainsKey(SessionId);
}
else
{
return
}发布于 2021-01-18 13:27:42
从您的代码逻辑中,您应该返回false,因为如果您不接受null string作为Key,则测试它是否存在必须为false:
if ( !nullExceptionHandler(SessionId) )
{
return sessionDictionary.ContainsKey(SessionId);
}
else
{
return false;
}因此,实际上,您不需要这样的方法,只需要集合的包装器的Add方法就可以不接受null。
除此之外,未知的nullExceptionHandler似乎毫无用处。
此外,字典不接受将null作为Key。
也许您想禁止将string.Empty作为Key。
因此,你可以写这样的东西:
public class Sessions
{
private readonly Dictionary<string, int> Items
= new Dictionary<string, int>();
public int Count => Items.Count;
public bool Exists(string sessionId)
{
return Items.ContainsKey(sessionId);
}
public void Add(string sessionId, int value)
{
if ( sessionId == null )
throw new System.ArgumentException($"{nameof(sessionId)} = (null)");
if ( sessionId == string.Empty )
throw new System.ArgumentException($"{nameof(sessionId)} = \"\"");
Items.Add(sessionId, value);
}
public void Remove(string sessionId)
{
if ( Items.ContainsKey(sessionId) )
Items.Remove(sessionId);
}
}我将成员设置为public,以应用于经典的组合包装器情况,但如果您只在类中为专用逻辑内部处理内容,因为您在代码中使用private,所以它是相同的,只有几个变体。
https://stackoverflow.com/questions/65767022
复制相似问题