以下代码的目的是使用List.Find()方法在通用列表中查找特定值。我正在粘贴下面的代码:
class Program
{
public static List<Currency> FindItClass = new List<Currency>();
public class Currency
{
public string Country { get; set; }
public string Code { get; set; }
}
public static void PopulateListWithClass(string country, string code)
{
Currency currency = new Currency();
currency.Country = country;
currency.Code = code;
FindItClass.Add(currency);
}
static void Main(string[] args)
{
PopulateListWithClass("America (United States of America), Dollars", "USD");
PopulateListWithClass("Germany, Euro", "EUR");
PopulateListWithClass("Switzerland, Francs", "CHF");
PopulateListWithClass("India, Rupees", "INR");
PopulateListWithClass("United Kingdom, Pounds", "GBP");
PopulateListWithClass("Canada, Dollars", "CAD");
PopulateListWithClass("Pakistan, Rupees", "PKR");
PopulateListWithClass("Turkey, New Lira", "TRY");
PopulateListWithClass("Russia, Rubles", "RUB");
PopulateListWithClass("United Arab Emirates, Dirhams", "AED");
Console.Write("Enter an UPPDERCASE 3 character currency code and then enter: ");
string searchFor = Console.ReadLine();
Currency result = FindItClass.Find(delegate(Currency cur) { return cur.Code == searchFor; });
Console.WriteLine();
if (result != null)
{
Console.WriteLine(searchFor + " represents " + result.Country);
}
else
{
Console.WriteLine("The currency code you entered was not found.");
}
Console.ReadLine();
}
}
我的查询是List为静态的原因,在那里使用static的目的是什么。
public static List<Currency> FindItClass = new List<Currency>();
另一个查询是在find方法中使用委托的原因。
Currency result = FindItClass.Find(delegate(Currency cur) { return cur.Code == searchFor; });
答案 0 :(得分:1)
该列表是静态的,因为它位于一个小型控制台应用程序中。由于Main是静态的,它只能访问&#34; Program&#34;中的静态变量。没有创建&#34; Program&#34;的新实例的类。
static关键字表示整个程序中将有一个该变量的实例。通常,开发人员应默认不使用静态变量,除非他们明确确定他们想要变量的单个实例。
正如注释所述,在调用Find时,现在可以选择使用delegate关键字。委托参数的目的是传递将对列表中的每个项执行的函数,以找到返回true的项。
在现代C#中,您可以按如下方式编写该行:
Currency result = FindItClass.Find(cur => cur.Code == searchFor);