在c#中将数据分配给类变量

时间:2016-06-23 12:44:21

标签: c# class object

我有两个课程如下 -

public class dayInOutLog
{
   public string status{ get; set;}
   public int inTime{ get; set;}
   public int outTime{ get; set;}
}
public class Emp_dayInOutLog
{
    public string id{ get; set;}
    public List<dayInOutLog>  listOf_inOut { get; set;} 
}

现在我需要为Emp_dayInOutLog类的对象设置值,我正在尝试如下,但我无法访问listOf_inOut的状态,inTime,outTime。

Emp_dayInOutLog obj = new Emp_dayInOutLog ();

    obj.Add (new Emp_dayInOutLog {id = "1",listOf_inOut = new List<dayInOutLog> {   status = "Absent",inTime = 585, outTime = 690}          });

我哪里错了?

5 个答案:

答案 0 :(得分:2)

更正:您必须在列表中添加类型dayInOutLog的实例,例如:

Emp_dayInOutLog obj = new Emp_dayInOutLog {
            id = "1",
            listOf_inOut = new List<dayInOutLog> {
              new dayInOutLog()    <-----------------
              {
                status = "Absent",
                inTime = 585,
                outTime = 690
              }
            }
        });

答案 1 :(得分:2)

您不仅需要创建新列表,还需要创建新的dayInOutLog对象

obj = new Emp_dayInOutLog() {
            id = "1",
            listOf_inOut = new List<dayInOutLog> {
                 new dayInOutLog(){
                    status = "Absent",
                    inTime = 585,
                    outTime = 690
                 }
            }
        });

如果您要逐步创建它,您的代码将变得更具可读性 你会更容易找到这样的错误 此外,如果您为类提供构造函数,则只需在创建时传递值:

class dayInOutLog
{
    public string status { get; set; }
    public int inTime { get; set; }
    public int outTime { get; set; }

    public dayInOutLog(string st, int t_1, int t_2)
    {
        this.status = st;
        this.inTime = t_1;
        this.outTime = t_2;
    }
}

public class Emp_dayInOutLog
{
    public string id{ get; set;}
    public List<dayInOutLog>  listOf_inOut { get; set;}

    public Emp_dayInOutLog(string _id)
    {
        this.id = _id;
        this.listOf_inOut = new List<dayInOutLog>();
    }
}

您对这些对象的创建可能如下所示:

Emp_dayInOutLog obj = new Emp_dayInOutLog("1");

obj.listOf_inOut.Add(new dayInOutLog("Absent", 585, 690));

答案 2 :(得分:1)

listOf_inOut没有直接的status,inTime和outTime属性。它是dayInOutLog记录的列表,那些具有这些属性。

添加新日志条目的代码应为:

var log = new Emp_dayInOutLog {
            id = "1",
            listOf_inOut = new List<dayInOutLog>
            {
                new dayInOutLog
                {
                    status = "Absent",
                    inTime = 585,
                    outTime = 690
                }
            }
        });

然后您可以使用任何列表控制循环或索引来访问它。

答案 3 :(得分:1)

您必须创建dayInOutLog,然后将其添加到列表中:

var obj = new Emp_dayInOutLog() {
            id = "1",
            listOf_inOut = new List<dayInOutLog> {
                new dayInOutLog(){
                   status = "Absent",
                   inTime = 585,
                   outTime = 690
                }
            }
        };

答案 4 :(得分:1)

您只需要这样做:

 Emp_dayInOutLog obj = new Emp_dayInOutLog()
            {
                id = "1",
                listOf_inOut = new List<dayInOutLog> {
                new dayInOutLog(){
                   status = "Absent",
                   inTime = 585,
                   outTime = 690
                }
            }
            };

您可以访问您的状态,例如:

obj.listOf_inOut.ElementAt(0).status

Emp_dayInOutLog的上下文中不存在Add()方法,obj上的无法使用。 但您可以通过以下方式在其列表中使用:

obj.listOf_InOut.Add(New dayInOutLog () {...})