簡體   English   中英

如何從包含類對象的列表<>中檢索數據

[英]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類之外設置其值的嘗試都將失敗,因為該setprivate 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM