[英]How do I retrieve data from a list<> containing class objects
我想通過foreach從創建的包含類對象的列表中檢索數據,但無法執行。 有人可以告訴我代碼中缺少什么嗎?
我有一個包含以下代碼的Recipes.cs類:public class Recipe {
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 ..因此列表確實包含正確的信息。
請向我們顯示食譜類的代碼。 除此之外,您到那里都是最主要的方式...
foreach(Recipe rec in Rlist)
{
string str = rec.<PropertyName>;
}
您需要為Recipe
類中的成員設置適當的訪問修飾符 。
public :訪問不受限制。
protected :訪問僅限於包含類或從包含類派生的類型。
內部 :訪問僅限於當前程序集。
protected internal :訪問僅限於當前程序集或從包含類派生的類型。
private :訪問僅限於包含類型。
默認情況下,您的Recipe
類的成員將具有private訪問修飾符。
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文章: 大寫約定 。 而且,這是一個: C#編碼約定(《 C#編程指南》) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.