【问题标题】:how to adjust "is a type but is used like a variable"?如何调整“是一种类型但像变量一样使用”?
【发布时间】:2009-06-01 11:41:50
【问题描述】:

我正在尝试在 Web 服务中生成一些代码。但它返回 2 个错误:

1) List 是一种类型,但用作变量

2) 方法“客户”没有重载需要“3 个参数”

[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class wstest : System.Web.Services.WebService
    {

        [WebMethod]
        public List<Customer> GetList()
        {
            List<Customer> li = List<Customer>();
            li.Add(new Customer("yusuf", "karatoprak", "123456"));
            return li;
        }
    }

    public class Customer
    {
        private string name;
        private string surname;
        private string number;

        public string Name { get { return name; } set { name = value; } }
        public string SurName { get { return surname; } set { surname = value; } }
        public string Number { get { return number; } set { number = value; } }
    }

如何调整上述错误?

【问题讨论】:

  • List类前面使用new关键字

标签: c# .net asp.net generics


【解决方案1】:

问题出在一线

List<Customer> li = List<Customer>();

你需要添加“新”

List<Customer> li = new List<Customer>();

另外下一行应该是:

li.Add(new Customer{Name="yusuf", SurName="karatoprak", Number="123456"});

编辑:如果您使用的是 VS2005,那么您必须创建一个带有 3 个参数的新构造函数。

public Customer(string name, string surname, string number)
{
     this.name = name;
     this.surname = surname;
     this.number = number;
}

【讨论】:

  • +1,但第二条错误消息的更好解决方案是创建一个接受三个参数的构造函数。
  • 你的最后一个语句当然假设是 3.0,否则我们必须假设他忘记给我们一个构造函数:)
  • @annakata:我也有同样的想法!
【解决方案2】:

这个

List<Customer> li = List<Customer>();

需要:

List<Customer> li = new List<Customer>();

并且您需要创建一个 Customer 构造函数,该构造函数接受您要传递的 3 个参数。默认的 Customer 构造函数不接受任何参数。

【讨论】:

    【解决方案3】:

    回答你的第二个问题:

    您要么需要创建一个接受三个参数的构造函数:

    public Customer(string a_name, string a_surname, string a_number)
    {
         Name = a_name;
         SurName = a_surname;
         Number = a_number;
    }
    

    或在对象创建后设置值:

    Customer customer = new Customer();
    customer.Name = "yusuf";
    customer.SurName = "karatoprak";
    customer.Number = "123456";
    li.Add(customer);
    

    【讨论】:

      【解决方案4】:

      由于Customer 类中的所有属性都具有公共设置器,因此您并非绝对必须 创建构造函数(正如大多数人所建议的那样)。您还可以选择使用默认的无参数构造函数并设置对象的属性:

      Customer c = new Customer();
      c.Name = "yusuf";
      c.SurName = "karatoprak";
      c.Number = "123456";
      li.Add(c);
      

      【讨论】:

        猜你喜欢
        • 2013-12-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 2020-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多