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