我想通过foreach从我创建的包含类对象的列表中检索数据,但我无法做到。 有人可以告诉我我的代码中缺少什么吗?
我有一个包含以下代码的Recipes.cs类: 公共课食谱 {
string _oveskrift;
int _recipe_id;
string _opskrift;
int _kcal;
public Recipe(string overskrift, int recipe_id, string opskrift,int kcal)
{
_oveskrift = overskrift;
_recipe_id = recipe_id;
_opskrift = opskrift;
_kcal = kcal;
}
}
public class Recipes
{
public List<Recipe> CreateRecipeList()
{
Recipe opskrift1 = new Recipe("Cornflakes med Chili",1,"4 kg cornflakes bages", 420);
Recipe opskrift2 = new Recipe("Oksemørbrad",2,"Oksemørbrad steges i baconfedt", 680);
Recipe opskrift3 = new Recipe("Tun i vand",3,"Dåsen åbnes og tunen spises", 120);
List<Recipe> Recipelist = new List<Recipe>();
Recipelist.Add(opskrift1);
Recipelist.Add(opskrift2);
Recipelist.Add(opskrift3);
return Recipelist;
}
}
我从另一个类calculator.cs调用CreateRecipeList(),代码如下:
private int FindRecipes()
{
List<Recipe> Rlist = new List<Recipe>();
// CREATE THE CLASS AND ADD DATA TO THE LIST
Recipes r = new Recipes();
Rlist = r.CreateRecipeList();
int test = 0; // used only for test purposes
foreach(var rec in Rlist)
{
rec.????
test++;
}
return test;
}
我认为我应该能够点击我的方式进入rec。“类对象名称”。“值”
但没有任何反应!
我得到的只是rec.Equals,rec.GetHashcod等选项。这显然是错的。
为了记录,我也尝试过:
foreach(Recipe rec in Rlist)
{
rec.????
test++;
}
但这也不起作用。 Int测试仅用于测试目的..它返回3 ..所以列表确实包含正确的信息。
答案 0 :(得分:3)
请向我们展示食谱类的代码。除此之外,你大部分都在那里...
foreach(Recipe rec in Rlist)
{
string str = rec.<PropertyName>;
}
答案 1 :(得分:3)
您需要为Recipe
课程中的成员设置正确的access modifiers。
公开:访问不受限制。
protected :访问仅限于从包含类派生的包含类或类型。
内部:访问仅限于当前程序集。
受保护的内部:访问仅限于从包含类派生的当前程序集或类型。
私有:访问仅限于包含类型。
默认情况下,Recipe
课程的成员将拥有私有访问修饰符。
string _oveskrift;
int _recipe_id;
string _opskrift;
int _kcal;
是:
private string _oveskrift;
private int _recipe_id;
private string _opskrift;
private int _kcal;
您可能希望按如下方式修改成员访问权限,以便仅在类代码中设置成员的值。由于Recipe
为set
,因此在private
课程之外设置其值的任何尝试都将失败。 get
仍然是public
,这使得值可供阅读。
public class Recipe
{
string _oveskrift;
int _recipe_id;
string _opskrift;
int _kcal;
public string Oveskrift
{
get
{
return _oveskrift;
}
private set
{
_oveskrift=value;
}
}
public int RecipeId
{
get
{
return _recipe_id;
}
private set
{
_recipe_id = value;
}
}
public string Opskrift
{
get
{
return _opskrift;
}
private set
{
_opskrift = value;
}
}
public int Kcal
{
get
{
return _kcal;
}
private set
{
_kcal = value;
}
}
public Recipe(string overskrift, int recipe_id, string opskrift, int kcal)
{
_oveskrift = overskrift;
_recipe_id = recipe_id;
_opskrift = opskrift;
_kcal = kcal;
}
}
另外,请尽快阅读以下MSDN文章:Capitalization Conventions。而且,这一个:C# Coding Conventions (C# Programming Guide)。