KeyValuePair 的默认值
我有一个 IEnumerable
,我正在使用
var getResult= keyValueList.SingleOrDefault();
if(getResult==/*default */)
{
}
else
{
}
如何检查 getResult
是否是默认值,以防找不到正确的元素?
我无法检查它是否为 null
,因为 KeyValuePair
是一个结构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
试试这个:
或者这个:
Try this:
or this:
您可以创建一个通用的(和通用的)扩展方法,如下所示:
用法:
You can create a general (and generic) extension method, like this one:
Usage:
试试这个:
Try this:
从您的原始代码看来,您想要的是检查列表是否为空:
From your original code it looks like what you want is to check if the list was empty:
我建议使用扩展方法更容易理解:
然后使用:
I recommend more understanding way using extension method:
And then just use:
为了避免
KeyValuePair.Equals(object)
装箱,您可以使用ValueTuple
。To avoid the boxing of
KeyValuePair.Equals(object)
you can use aValueTuple
.对于您的应用程序来说,检查键或值是否为默认值可能就足够了。例如,如果您有一个映射正值的
KeyValuePair
非零整数到字符串,并且字符串永远不会为空,那么:将是已返回默认 KVP 的指示符
本质上,如果只需一个测试就可以,则可能不需要测试整个 KVP 是否为默认值;考虑您的用例
It may suffice, for your application, to check if either the Key, or the Value are
default
.. For example if you have aKeyValuePair<int,string>
mapping positive nonzero integers to strings, and the strings are never null, then either:Would be an indicator that a default KVP has been returned
In essence, there may be no need to test the whole KVP for being default, if just one test will do; consider it for your use case
在
C# 8.0
或更高版本或.NET Core 3.x
、.NET 5.x
或更高版本中使用模式匹配using pattern match in
C# 8.0
or above or.NET Core 3.x
,.NET 5.x
or above