C# 列表<;类别>;添加字符串

C# 列表<;类别>;添加字符串,c#,string,list,C#,String,List,这是一节课: 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 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; 
    }


}
我想在Vokabel1中添加Userchoice

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); 
        }
List-Vokabel1=新列表();
对于(int i=0;i<9;i++){
WriteLine(“输入一个Vokabel[“+i+”]:”;
字符串Userchoice=Console.ReadLine();
添加(用户选择);
}
这不会运行。我尝试拆分
Userchoice
-不起作用。
谢谢你阅读我的问题

您尝试将
字符串Userchoice
添加为
Vokabel
。这毫无意义。字符串在结构上不同于
Vokabel

想想你想发生什么。这个问题不清楚你想要什么。没有从字符串到
Vokabel
的明显转换


在任何情况下,您只能将
Vokabel
实例添加到列表中。以某种方式从用户输入的字符串创建这样一个实例。

您是对的,它不起作用,我想它甚至无法编译

必须向
Vokabel1
的构造函数提供两个值,并且必须使用构造函数

string[] values = Userchoice.Split(':');

Vokabel1.Add(new Vokabel(values[0], values[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)); 
    }
for(int i=0;i<9;i++){
Console.WriteLine(“为Vokabel[“+i+”]:”)输入一个_DV;
字符串dv=Console.ReadLine();
Console.WriteLine(“为Vokabel[“+i+”]:”)输入EV;
字符串ev=Console.ReadLine();
添加(新的Vokabel(dv,ev));
}

因此,一个聪明的方法是使用
隐式转换:

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);
        }
    }
}
它将在
上为每个值拆分,并根据用户输入创建一个新的
Vokabel
。有了这些,你可以很容易地看出这是多么灵活

注意:这有点间接,因为
字符串
如何强制转换为
Vokabel
并不明显,但这是一种方法


请记住,您的代码不起作用的原因是您没有构建
列表
,因此只添加
字符串
,而不构建某种代码将其转换为
Vokabel
显然是失败的。

这不起作用的原因是您试图在需要反对

这样想吧

你走近一扇门。门是锁着的。打开门的唯一方法是用一块覆盖着巧克力和布丁的蛋糕

只做清单。加上(你的绳子)你试图在没有蛋糕剩余部分的情况下把布丁塞进锁里

你需要做的是

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); 
        }
List-Vokabel1=新列表();
对于(int i=0;i<9;i++){
WriteLine(“输入一个Vokabel[“+i+”]:”;
//这是布丁
字符串Userchoice=Console.ReadLine();
//这是你的蛋糕
Vokabel temp=new Vokabel(){EV=Userchoice};//我将EV用于您的Userchoice
Vokabel1.添加(温度);
}

这将创建一个新对象,用布丁填充它并将其放入列表中。明白了吗?

你必须创建一个类型为
Vokabel
的对象,你不能只添加一个字符串。这很有效。但是我更愿意,用户只需要输入一行。对不起,我不能向上投票。@user3092365:我想说这可以向上投票(我也这样做了),因为这是一种方法。我用一个字符串提供了一种方法。但是你不能因为这种方法而责怪斯图尔特,因为你从来没有明确定义过你想要什么。在一行中,你需要
解析
反序列化
用户键入的内容,这也意味着用户知道编码方案是什么(例如,逗号分隔,或@MichaelPerrenoud演示以冒号分隔的编码)。但显然,在这种情况下需要验证和错误处理。@Michael,由于我的声誉,我无法投票。Stuarts的答案简短而准确。@user3092365:我更新了示例,在“:”上拆分,因此用户必须输入一行。@user3092365:当然,您可以用空格或其他任何内容替换
。是的-th这就是它应该如何工作。谢谢:)“聪明”=>不是一件好事。@usr:我不是不明白你的意思,但这可能是一个非常主观的评论。“你试图添加字符串Userchoice作为一个Vokabel。这没有意义。”-我知道。但我想你更容易理解我的问题。“问题中不清楚您想要什么。”-抱歉,我编辑了我的问题。
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); 
        }