1

現在、アイテムのリストを表示する作業を行っています。GetNextItemを返すメソッドを作成しましたobj1。からメソッドを呼び出すと、buttonClick次のエラーが発生します。

Cannot implicitly convert type 'TreeFarm.Form1.fruit_trees' to 'string'.

なぜそのようなことをしているのかわからない。

public items_list GetNextItem()
{
    items_list obj1 = this.current_item;
    if (obj1 != null)
    {
        current_item = current_item.next_item;
    }
    return obj1;
}

ListForItems mainlist = new ListForItems();
private void ShowNextItem_Click(object sender, EventArgs e)
{

    labelSpecificItem.Text = mainlist.GetNextItem();         
}
4

4 に答える 4

5

items_listタイプの値を文字列(タイプの).Textに変換しようとしていますString。したがって、これがオブジェクトの1つである場合は、暗黙のキャスト演算子を作成するか.ToString()、を使用して文字列に明示的にキャストするか、を使用してみてください(String)mainlist.GetNextItem()

この種の割り当てを希望items_listし、それがオブジェクトの1つである場合は、そのクラスに次の追加を提案します。

public static implicit operator String(items_list itemslist)
{
    return /* however you want to portray itemslist as a string */;
}

そうでなければ、あなたはそれを正しくすることに頼らなければならないでしょうToString()

于 2012-12-14T00:56:12.790 に答える
0

items_list他の回答が述べているように、オブジェクトをにキャストすることはできませんstringitems_listラベルに表示したいコンポーネントがある場合は、オブジェクト全体ではなく、それを割り当てます。

labelSpecificItem.Text = mainlist.GetNextItem().textYouWantToSee;
于 2012-12-14T00:58:57.663 に答える
0

アイテムはToString()メソッドをオーバーライドし、それを使用してそれらを文字列に変換する必要があります。

次のパターンに従います。

public class FruitTree 
{
    public string Name { get; set; }
   // your code
   public override string ToString()
   {
       return string.Format("A {0} tree.", Name);
   }
}
// later in the click handler
{
    labelSpecificItem.Text = tree_item.ToString();
} 
于 2012-12-14T01:06:17.077 に答える