无法将类型隐式转换为'string'错误

时间:2012-12-14 00:51:15

标签: c#

我目前正在处理显示项目列表。我创建了一个返回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 个答案:

答案 0 :(得分:4)

您尝试将items_list类型的值转换为字符串(.Text属于String类型)。因此,如果这是您的一个对象,您可以创建隐式强制转换运算符,也可以尝试使用.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()做对。

答案 1 :(得分:0)

正如其他答案所提到的,您无法将items_list对象投射到string。如果您希望在标签中显示items_list的组件,请分配该组件而不是整个对象:

labelSpecificItem.Text = mainlist.GetNextItem().textYouWantToSee;

答案 2 :(得分: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();
} 

答案 3 :(得分: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 ...中使用“ string”:)