Joh*_*nes 3 linq enums list .net-3.5
为什么当列表不包含我要搜索的元素时,List.Find(以及列表上的LINQ查询)总是返回第一个枚举元素?
场景:
我的枚举:
public enum TestEnum
{
EnumOne,
EnumTwo,
EnumThree
}
Run Code Online (Sandbox Code Playgroud)
我的测试:
var TestEnum1 = TestEnum.EnumOne;
var TestEnum2 = TestEnum.EnumTwo;
var TestEnum3 = TestEnum.EnumThree;
List<TestEnum> testEnumList = new List<TestEnum>();//{ TestEnum1, TestEnum2 };
var selectedWithLinq = (from c in testEnumList where c.Equals(TestEnum3) select c).FirstOrDefault();
var selectedWithListFind = testEnumList.Find(myEnum => TestEnum3.Equals(myEnum)));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,selectedWithLinq和selectedWithListFind都返回TestEnum.EnumOne.如果我将TestEnum3添加到列表中,它将正确返回.
Dar*_*rov 10
作为TestEnum一个值类型,当列表中没有找到任何元素时,它不能简单地返回null(就像你有一个引用类型数组那样),但它将返回在这种情况下default(TestEnum)等于的值EnumOne.但无论如何你想要实现什么?
| 归档时间: |
|
| 查看次数: |
7462 次 |
| 最近记录: |