【问题标题】:Sending SqlDataReader to constructor as parameter and constructor argument error将 SqlDataReader 作为参数和构造函数参数错误发送到构造函数
【发布时间】:2013-05-29 06:44:33
【问题描述】:

我创建了一个公共类并编写了一个公共构造函数,其参数如下:

public Patient(SqlDataReader reader, string p) {
        if (p == "L") {
            Name = reader[0].ToString();
        }
        else { }
    }

然后我像这样使用这个构造函数

SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Patient myP(reader, "L");                    
                }

然后在调试过程中,我得到了错误:Error 49 Expected ; or =(不能在声明中指定构造函数参数)

问题出在哪里,我该如何解决?

【问题讨论】:

  • 我应该说:您可能会发现使用 ORM 或微 ORM 之类的工具来填充对象更有效; “使用数据读取器填充对象”几乎是一个已解决的问题

标签: c# constructor sqldatareader


【解决方案1】:

该语法根本无效;试试:

Patient myP = new Patient(reader, "L");

或(相同的结果):

var myP = new Patient(reader, "L");

【讨论】:

    【解决方案2】:

    您应该使用带有new 运算符的构造函数;

    Patient p = new Patient(reader, "L");
    

    您的语法对 C# 无效。

    来自new Operator (C# Reference)

    用于创建对象和调用构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-15
      • 2014-07-06
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多