我一直在寻找互联网,我没有找到任何关于如何使用lists的好视频或文字教程,这是我真正想学习的东西。
有没有人知道一个好的网站,或者有人可以解释如何使用Lists
?
答案 0 :(得分:7)
想象一下lists作为现实生活中的待办事项列表,您可以添加要做的事情,并在关闭它们时删除。您可以使用数字访问列表中的项目,只要它在范围内。
对多个对象使用Car1
,Car2
,Car3
,Car1Speed
,Car2Speed
等变量是一个常见的初学者错误,并且不满意,使用列表,类和其他object oriented techniques的组合,使这样的事情更有效,更容易维护。
在我深入探讨之前澄清:Array
可以被认为是固定的长度,网格的对象(数组可以可以重新调整大小,但非常昂贵)可以在1,2,3等维度中访问,具体取决于大小。当您想要提供列表功能并且能够查找项目时使用Dictionary
,例如:键可以是一种食物,值可以是食谱。如果您想知道如何制作饼图,可以使用Dictionary["Pie"]
找到它,但是对于列表,它只基于整数键。
免责声明:老实说,我不是最好的解释员,如果有任何混淆,请抱歉:/
列表可以处理任何类型的对象,从字符串列表到您制作的任何自定义类的列表。 BaseClass
列表也可以包含派生类类型的任何对象。
在我的示例中,您将有一个Cookbook
,其中包含List
Recipes
,其中包含Ingredients
列表以及其他属性强>
假装(甚至更好,请继续!)你有一个食谱类:
public class Recipe
{
List<Ingredient> Ingredients;
bool IsFavorite;
int TimeToMake;
string Pie;
}
一个成分类:
public class Ingredient
{
string Name;
int Amount;
}
显然,在生产代码中会有构造函数和各种方法,但让我们保持这一点。
假设您要创建Recipe
。 (我想示例构造函数是显而易见的,只是食物名称和/或数量)
Recipe pie = new Recipie("Pie");
//Add the ingredients
pie.Ingredients.Add(new Ingredient("Apples",3));
pie.Ingredients.Add(new Ingredient("Dough",1));
pie.Ingredients.Add(new Ingredient("Programmers don't bake, we code - Other random sweet stuff I guess goes here",9001));
pie.TimeToMake = 60;
pie.IsFavorite = true;
您现在有一个包含项目列表的Recipe
对象,请确保使用Ingredients = new List<Ingredient>();
假设你有一个Cookbook
课程,你可以更进一步,并有一份食谱清单。
class Cookbook
{
string Name;
int Pages;
List<Recipe> Recipes = new List<Recipe>();
}
与以前一样,您可以Add
配方,其中包含Ingredient
s。
Cookbook cb = new CookBook();
cb.Name = "Cyral's Tasty Delights";
cb.Recipes.Add(pie); //Add the recipe we made earlier
cb.Recipes.Add(new Recipe("Java") { /*Blah, :)*/ });
cb.Pages = 2;
希望您现在了解了哪些列表以及为何以及何时应该使用这些列表。
您可以使用许多可以使用的列表,以及可以使用它们执行的操作!
<强>循环强>
您可以遍历列表以读取他们拥有的信息并对其元素执行操作。
您可以使用foreach
来迭代您的列表并在食谱中打印出食谱
foreach (Recipe recipe in cb.Recipes)
{
Console.WriteLine(recipe.Name);
}
或for
for (int i = 0; i < cb.Recipes.Count; i++) //Loop through List with a for loop
{
Console.WriteLine(cb.Recipes[i].Name);
}
在上一个示例中,您可以看到我们如何从element
,index
获得i
。您可以从列表中获取0
到List.Count
范围内的任何元素。
方法和属性
操作列表有很多基本方法和属性,例如:
Clear()
清除列表内容
Remove(T)
与Add相反(真的!!!)
Contains(T)
检查列表是否包含元素
Insert(T)
在指定的索引处插入项目
Count
获取元素数
Here是List
方法的完整列表。
扩展示例
假设您要打印有关Cookbook
Console.WriteLine(cb.Name);
Console.WriteLine(cb.Recipes.Count + " recipes to make!");
Console.WriteLine(cb.Pages + " pages of expert cooking advice!");
这将输出:
Cyral的美味佳肴 2个食谱! 2页专家烹饪建议!
好的,现在这些数据并不令人印象深刻,但你明白了!
<强> LINQ 强>
我之前展示的方法,Contains(element)
方法将检查列表是否包含元素。假设我们想看看元素是否是最受欢迎的,我们只能看看它是否包含&#34;包含&#34;最喜欢的。我们可以使用一组很棒的方法来操纵Enumerables
LINQ
LINQ
是query language,可用于各种有用的操作。
我们可以使用Where(Func)
扩展来实现我们的目标。
Where
过滤集合中的元素和Select
(稍后会详细介绍)将方法应用于列表中的每个元素。
var FavoritePicks = cb.Recipes.Where(item => item.IsFavorite);
项目变量为Recipe
,=>
为lambda,表示&#34;转到&#34;。使用item.IsFavorite
,我们现在可以对其执行查询,在本例中为,如果它是真的。
您可以将此代码与Select(Func)
结合使用,以执行进一步的操作,例如在所有CAPS中打印所有最喜欢的食谱。
//Apply the transformation
var v = cb.Recipes.Where(item => item.IsFavorite).Select(element => element.Name.ToUpper());
//Print the result
foreach (Recipe r in v)
{
Console.WriteLine(r.Name + "is in all CAPS because it is such a favorite!");
}
看看它有多酷? (好吧,你可以用它做的事情:P)
列表是非常重要且基本的编程部分,这应该教会您如何使用它们的基础知识。
如果任何语法不完美,我很道歉,但它应该接近,这是我的第一个&#34;巨大的&#34;毕竟,我试着不要让它听起来像一个完整的教程:)
我会推荐精彩的网站 DotNetPerls 以及他们的List和LINQ教程。
快乐的编码!