gpt4 book ai didi

c# - 单一或默认 : Not return null on Custome structure

转载 作者:行者123 更新时间:2023-11-30 18:59:14 24 4
gpt4 key购买 nike

我有结构,

public struct Test
{
public int int1;
public string str;
}

在我的代码中,

List<Test> list = new List<Test>()
{
new Test(){ int1 =1, str="abc" },
new Test(){ int1 =2, str="abc" }
};

当我尝试在 List<Test> list 上使用 SingleOrDefault 时搜索条件 int1 值等于 3

Test result = list.SingleOrDefault(o => o.int1 == 3);

这里的结果有默认值的值,意味着 int1 = 0 和 str = null。这里我要 null不满足搜索条件时的值。有人指出我该怎么做吗?

最佳答案

值类型不可为空,因此您要么必须使用类,要么必须使用可为空的 Test?

但是如果你想坚持使用 struct,你应该创建一个名为 Empty 的静态字段来检查空值:

public struct Test
{
public static readonly Test Emtpy = new Test();
public int int1;
public string str;

public static bool operator ==(Test a, Test b)
{
return a.int1 == b.int1 && Equals(a.str, b.str);
}

public static bool operator !=(Test a, Test b)
{
return !(a==b);
}
}

这是您将在整个 .Net 框架中找到的约定。如果您以后想要检查 null(您可能会这样做),请改为检查 Test.Empty

List<Test> list = new List<Test>(){ new Test(){ int1 =1,str="abc"}, new Test(){ int1 =2,str="abc"}};
Test result = list.SingleOrDefault(o => o.int1 == 3);

if (result != Test.Emtpy)
...

关于c# - 单一或默认 : Not return null on Custome structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com