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(类型)。因此,如果这是您的对象之一,您可以创建一个隐式转换运算符,或者尝试使用或使用..TextString.ToString()(String)mainlist.GetNextItem()

如果您想要这种任务并且items_list是您的对象之一,我建议您在该课程中添加以下内容:

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对象强制转换为string. 如果items_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 回答
0

我自己也遇到过这个问题,但那是因为我忘记了它是如何完成的。这是我之前的代码:

public static string MakeRequest(string GetCountry, string GetTime, string Server, string Database)
    {
        var filter = Builders<RequestAccess>.Filter;
        var getCountryfilter = filter.Eq(x => x.GetCountry, GetCountry);
        var getTimefilter = filter.Eq(x => x.GetTime, GetTime);
        var databasefilter = filter.Eq(x => x.Database, Database);
        var serverfilter = filter.Eq(x => x.Servers, Server);

        var makeRequest = RequestCollection.Find(filter.Or(getCountryfilter, getTimefilter, databasefilter, serverfilter)).ToList();

        return makeRequest;
    }

但下面的代码是正确的:)

public static List<RequestAccess> MakeRequest(string GetCountry, string GetTime, string Server, string Database)
    {
        var filter = Builders<RequestAccess>.Filter;
        var getCountryfilter = filter.Eq(x => x.GetCountry, GetCountry);
        var getTimefilter = filter.Eq(x => x.GetTime, GetTime);
        var databasefilter = filter.Eq(x => x.Database, Database);
        var serverfilter = filter.Eq(x => x.Servers, Server);

        var makeRequest = RequestCollection.Find(filter.Or(getCountryfilter, getTimefilter, databasefilter, serverfilter)).ToList();

        return makeRequest;
    }

所以这意味着如果你想列出一些东西,那么不要在public static ...:)中使用“字符串”

于 2019-02-27T11:57:40.690 回答