无法隐式转换类型';字符串';到';控制台应用程序1.Kategori
本文关键字:控制台 应用程序 Kategori 字符串 转换 类型 | 更新日期: 2023-09-27 18:22:15
我有一个列表,我想添加一些数据,然后在控制台上写出来,但我得到了这个错误(错误在标题中)。我知道我的课有些地方不对。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Artikel
{
public string Artikelnummer { get; set; }
public string Varonamn { get; set; }
public string Beskrivning { get; set; }
public string Bild { get; set; }
public string Pris { get; set; }
public Kategori kategori { get; set; }
}
}
这是我用来创建列表的类。正如你所看到的,我有另一个名为Kategori的类,我已经创建了它的一个属性。现在我想在这个列表中使用它
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Artikel> Minlista = new List<Artikel>();
Minlista.Add(new Artikel { Varonamn = "Mjölk", Pris = "14.90", kategori ="", });
Minlista.Add(new Artikel { Varonamn = "Apelsin", Pris = "7.90", kategori = });
Minlista.Add(new Artikel { Varonamn = "Skinka", Pris = "20", kategori = "", });
Minlista.Add(new Artikel { Varonamn = "Räkost", Pris = "33", kategori = "", });
Minlista.Add(new Artikel { Varonamn = "Köttfärs", Pris = "45", kategori = "", });
}
}
}
当我尝试从列表中添加或设置值时,它运行良好,直到我尝试kategori。为什么?哦,也很抱歉,我用瑞典语写代码。希望它不会很难跟上。enter code here
名为kategori
的属性的类型为Kategori
,而不是string
。
public Kategori kategori { get; set; }
因此,不能将字符串的值分配给属性kategori
。您应该为kategori
分配一个类型为kategori
的对象。
将kategori
的类型更改为字符串或指定给它的值:
class Artikel
{
// ...
public string kategori { get; set; }
}
或分类(对于空值):
Minlista.Add(new Artikel { Varonamn = "Mjölk", Pris = "14.90", kategori = null });
或者对于"合适的对象":
Minlista.Add(new Artikel
{
Varonamn = "Mjölk",
Pris = "14.90",
kategori = new Kategori() { KategoriID = "myID", Name = "myName" }
});
根据注释中的请求进行更新:
要对其进行循环并获得kategori
,您可以执行以下操作:
foreach (var article in Minlista)
{
if (article.kategori != null)
Console.WriteLine(article.kategori.Namn);
}
p.S——正如你明确提到的:我总是建议用英语写代码,即使你只是在写"一些自己的小工具"。这只是"最佳实践",应该始终使用/训练IMO.…
如果kategori
是类Kategori
的实例,则需要使用Kategori
类的实例而不是字符串对其进行初始化。
void Main()
{
List<Artikel> Minlista = new List<Artikel>();
Minlista.Add(new Artikel
{ Varonamn = "Mjölk", Pris = "14.90",
kategori = new Kategori
{KategoriID = "1", Namn = "Kategori Name"}
});
}
如果在这一点上,您没有kategori
的值,那么您只需将其从初始化中删除(这意味着kategori
字段为空)
Minlista.Add(new Artikel { Varonamn = "Mjölk", Pris = "14.90", });