C# 无法将类型隐式转换为';字符串';错误

C# 无法将类型隐式转换为';字符串';错误,c#,C#,我目前正在处理显示项目列表的工作。我创建了一个方法GetNextItem,它返回obj1。当我从按钮单击调用该方法时,出现以下错误: 无法将类型“TreeFarm.Form1.fruit_trees”隐式转换为“string”。 不知道他为什么要做这样的事 public items_list GetNextItem() { items_list obj1 = this.current_item; if (obj1 != null) { current_i

我目前正在处理显示项目列表的工作。我创建了一个方法
GetNextItem
,它返回
obj1
。当我从
按钮单击
调用该方法时,出现以下错误:

无法将类型“TreeFarm.Form1.fruit_trees”隐式转换为“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();         
}

您正在尝试将列表中的
items\u-list
类型的值转换为字符串(
.Text
string
类型)。因此,如果这是您的对象之一,您可以创建隐式强制转换操作符,或者尝试使用
.ToString()
或使用
(string)mainlist.GetNextItem()
将其显式强制转换为字符串

如果您需要此类分配,并且
项目列表
是您的目标之一,我建议在该类中添加以下内容:

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

否则,您将不得不依赖于
ToString()
来正确处理它。

您正在尝试将
items\u list
in类型的值转换为字符串(
。Text
string
类型)。因此,如果这是您的对象之一,您可以创建隐式强制转换操作符,或者尝试使用
.ToString()
或使用
(string)mainlist.GetNextItem()
将其显式强制转换为字符串

如果您需要此类分配,并且
项目列表
是您的目标之一,我建议在该类中添加以下内容:

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

否则,您将不得不依赖于
ToString()
来正确处理它。

正如其他答案所提到的,您不能将
项列表
对象强制转换为
字符串
。如果要在标签中显示
items\u list
的某个组件,请指定该组件,而不是整个对象:

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

正如其他答案所提到的,您不能将
项目列表
对象强制转换为
字符串
。如果要在标签中显示
items\u list
的某个组件,请指定该组件,而不是整个对象:

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

您的项需要重写
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();
} 

您的项需要重写
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();
} 

我自己也有这个问题,但那是因为我忘了它是怎么做的。 这是我以前的代码:

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;
    }
publicstaticstringmakerequest(stringgetcountry、stringgettime、stringserver、stringdatabase)
{
var-filter=Builders.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();
返回makeRequest;
}
但下面的代码是正确的:)

公共静态列表MakeRequest(字符串GetCountry、字符串GetTime、字符串服务器、字符串数据库)
{
var-filter=Builders.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();
返回makeRequest;
}

这意味着,如果你想列出一些东西,那么不要在公共静态中使用“string”…
:)

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

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;
    }
publicstaticstringmakerequest(stringgetcountry、stringgettime、stringserver、stringdatabase)
{
var-filter=Builders.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();
返回makeRequest;
}
但下面的代码是正确的:)

公共静态列表MakeRequest(字符串GetCountry、字符串GetTime、字符串服务器、字符串数据库)
{
var-filter=Builders.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();
返回makeRequest;
}

因此,这意味着如果您试图创建一个列表,那么不要在
公共静态中使用“string”…
:)

项目列表的类型是什么?这意味着
项目列表不能隐式转换为字符串(
.Text=mainList.GetNextItem()
),而不是
.Text=(string)mainList.GetNextItem>()
.Text=mainlist.GetNextItem().ToString()
)是否有要显示的
项目列表的组件?从
GetNextItem()返回该组件
方法而不是整个对象。
项列表的类型是什么?
表示项列表不能隐式转换为字符串(
.Text=mainList.GetNextItem()
而不是
。Text=(string)mainList.GetNextItem()