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()
)