[英]Getting an specific item from List<>
我有個問題! 我發現有人遇到同樣的問題,但沒有答案對我有幫助。我試圖從List <>獲取特定項目,但我的“ test”結果返回null,為什么?
public MainWindow()
{
InitializeComponent();
var modelList = new Model2();
modelList.MyPropertyList.Add(new Model1 { Name = "Hej1", MyProperty1 = true });
modelList.MyPropertyList.Add(new Model1 { Name = "Hej2", MyProperty1 = false });
var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1;
}
根據OP評論
您怎么知道它為空? – dotctor 1小時前
當我調試時,該值為null。-– Dennis Eriksson 1小時前
確定執行該行后檢查值嗎? 嘗試添加`MessageBox.Show(test.ToString());)看看結果是什么– dotctor 1小時前
我為我的問題感到羞恥。.它一直在起作用! 我在將值聲明為“測試”之前讀取該值是我的錯! 但是謝謝! – Dennis Eriksson 1小時前
我認為問題出在調試程序的方式上。 您已經在var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1;
上放置了一個斷點var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1;
並且執行立即在該行之前停止, 但是您認為該行已經執行,並且Visual Studio在Autos窗口中將test
的值顯示為null
,這使您認為該test
實際上為null。 如果按F10
繼續執行或添加諸如MessageBox.Show(test.ToString());
只是為了使上一行執行或以某種方式顯示test
的值,您會發現它不是null
。
答案不多-但您的代碼應該可以正常工作。
void Main()
{
var modelList = new Model2();
modelList.MyPropertyList.Add(new Model1 { Name = "Hej1", MyProperty1 = true });
modelList.MyPropertyList.Add(new Model1 { Name = "Hej2", MyProperty1 = false });
var test = modelList.MyPropertyList.Find(x => x.Name == "Hej1").MyProperty1;
Console.WriteLine (test);
}
public class Model1
{
public string Name { get; set; }
public bool? MyProperty1 { get; set; }
}
public class Model2
{
public List<Model1> MyPropertyList { get; set; }
public Model2()
{MyPropertyList = new List<Model1>();
}
}
結果: True
。
代替使用Find(),請嘗試使用以下命令:
var test = modelList.MyPropertyList.SingleOrDefault(model => model.Name == "Hej1");
if(test != null)
{
//-- do something here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.