Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Array.Find()未指定返回值_C#_Arrays - Fatal编程技术网

C# Array.Find()未指定返回值

C# Array.Find()未指定返回值,c#,arrays,C#,Arrays,我试图使用Array.Find()从结构数组返回一个结构,并将其分配给名为Result的结构。但是,Result的值从不从null更改(我通过调试器运行了两次)。我的代码贴在下面,有人能帮我吗?提前谢谢 public void button_Click(object sender, EventArgs e) { string formName = textBoxName.Text; Info Result = Array.Find<Info>(Data, p =>

我试图使用
Array.Find()
从结构数组返回一个结构,并将其分配给名为Result的结构。但是,Result的值从不从null更改(我通过调试器运行了两次)。我的代码贴在下面,有人能帮我吗?提前谢谢

public void button_Click(object sender, EventArgs e)
{
    string formName = textBoxName.Text;
    Info Result = Array.Find<Info>(Data, p => p.Name == formName);
    textBoxHeight.Text = Result.Height;
}
public void按钮\u单击(对象发送者,事件参数e)
{
string formName=textBoxName.Text;
Info Result=Array.Find(数据,p=>p.Name==formName);
textBoxHeight.Text=Result.Height;
}
我正在尝试搜索名为
Data
的结构数组(
Info[]
),查找元素x,其中
Info[x]。Name
与在另一个文本框中输入的值相同


调试器显示它成功地找到了元素,但该元素从未分配给Result。

因为您使用的是结构数组。find返回一个非null对象,即使它在数据中找不到条目-如果深入研究该对象的属性,您将看到其内部属性为null。这就是你看到的吗?若您从使用结构切换到类,那个么结果将按预期返回null

如果大小写不重要,我将使用equals()和不变大小写查找。这样,当输入Test、Test和Test时,将在数据中找到一个名为example Test的项:使用您现有的代码,必须是Test才能找到它

Info Result = Array.Find<Info>(Data, p => p.Name.Equals(formName, StringComparison.InvariantCultureIgnoreCase));


我懂了!对不起,这是我第一次发帖。没关系,不用道歉。堆栈交换确实是一种很好的资源,但了解如何有效地使用它需要一点时间。别灰心,下次好好学习,做得更好。没什么大不了的。你确定名字是相等的吗?两个管柱的套管是否相同?你确定文本框中没有空格吗?很有可能它实际上不一样,可能有一些字符不可见?尝试在调试器中比较二进制值。实际上,还可以尝试对
string.Equals
进行一些重载。
Info Result = Array.Find<Info>(Data, p => p.Name.Equals(formName.Trim(), StringComparison.InvariantCultureIgnoreCase));
using System.Linq;
Info Result = Data.SingleOrDefault(p => p.Name.Equals(formName.Trim(), StringComparison.InvariantCultureIgnoreCase));