这是班级:
public class Vokabel
{
string DV;
string eV;
public string _DV
{
get { return DV;}
set { DV = value;}
}
public string EV
{
get{return eV;}
set{eV = value;}
}
public Vokabel (string dv, string ev)
{
this._DV = dv;
this.EV = ev;
}
}
我想将Userchoice添加到Vokabel1。
List<Vokabel> Vokabel1 = new List<Vokabel> ();
for (int i = 0; i< 9; i++) {
Console.WriteLine("Enter a Vokabel["+i+"]:" );
string Userchoice = Console.ReadLine();
Vokabel1.Add(Userchoice);
}
这不会运行。我试图分开Userchoice
- 不要工作。
感谢您阅读我的问题!
答案 0 :(得分:1)
您尝试将string Userchoice
添加为Vokabel
。这是没有意义的。字符串在结构上与Vokabel
不同。
考虑一下你想要发生什么。从问题中你不清楚你想要什么。从字符串到Vokabel
没有明显的转换。
在任何情况下,您只能将Vokabel
个实例添加到列表中。以某种方式从用户输入的字符串中创建这样的实例。
答案 1 :(得分:1)
你是对的它不起作用,我猜它甚至不能编译。
您必须为Vokabel1
的构造函数提供两个值,并且必须使用构造函数。
string[] values = Userchoice.Split(':');
Vokabel1.Add(new Vokabel(values[0], values[1]));
答案 2 :(得分:1)
您将需要提示每个属性,并将这些属性用于Vokabel
类的构造函数。类似的东西:
for (int i = 0; i< 9; i++) {
Console.WriteLine("Enter a _DV for Vokabel["+i+"]:" );
string dv = Console.ReadLine();
Console.WriteLine("Enter a EV for Vokabel["+i+"]:" );
string ev = Console.ReadLine();
Vokabel1.Add(new Vokabel(dv, ev));
}
答案 3 :(得分:1)
因此,一个聪明的方法是使用implicit
强制转换:
public class Vokabel
{
string DV;
string eV;
public string _DV
{
get { return DV; }
set { DV = value; }
}
public string EV
{
get { return eV; }
set { eV = value; }
}
public Vokabel(string dv, string ev)
{
this._DV = dv;
this.EV = ev;
}
public static implicit operator Vokabel(string vals)
{
var valsArray = vals.Split(':');
return new Vokabel(valsArray[0], valsArray[1]);
}
}
class Program
{
static void Main(string[] args)
{
List<Vokabel> Vokabel1 = new List<Vokabel>();
for (int i = 0; i < 9; i++)
{
Console.WriteLine("Enter a Vokabel[" + i + "]:");
string Userchoice = Console.ReadLine();
if (string.IsNullOrEmpty(Userchoice))
{
break;
}
Vokabel1.Add(Userchoice);
}
}
}
在此示例中,如果您使用输入:
A:B
C:D
E:F
...
它会在每个值的:
上拆分,并从用户输入中创建一个新的Vokabel
。有了这个,你可以很容易地看到它的灵活性。
注意:这是一些间接,因为string
投射到Vokabel
的方式并不自然,但这是一种方法
请记住,您的代码无效的原因是因为您没有构建List<string>
,因此只需添加string
而不构建某种代码来将其转换为{ {1}}显然失败了。
答案 4 :(得分:1)
这不起作用的原因是因为您试图在需要对象的位置添加字符串
想象这个
你走近一扇门。门被锁上了。打开门的唯一方法是用巧克力覆盖的蛋糕和布丁。
只要做List.Add(YourString),你就会试图将布丁强行放入锁中,而没有剩余的蛋糕。
你需要做的是这个
List<Vokabel> Vokabel1 = new List<Vokabel> ();
for (int i = 0; i< 9; i++) {
Console.WriteLine("Enter a Vokabel["+i+"]:" );
//This is pudding
string Userchoice = Console.ReadLine();
//This is your cake
Vokabel temp = new Vokabel(){ EV = Userchoice }; //I used EV for your userchoice
Vokabel1.Add(temp);
}
这会创建一个新对象,用布丁填充它并将其放入列表中。得到它?