c#编译器错误CS1526:新类型表达式需要(),[]或{}

时间:2010-10-11 19:17:04

标签: c# constructor compiler-errors

我正在按照教程创建一个类:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Session3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Vehicle my_Car = new Vehicle;
        }
    }
    class Vehicle
    {
        uint mileage;
        byte year;
    }
}

我在这一行上收到了上述错误:

private void button1_Click(object sender, EventArgs e)
{
    Vehicle my_Car = new Vehicle;
}

有谁知道我做错了什么?

5 个答案:

答案 0 :(得分:13)

使用

Vehicle my_Car = new Vehicle();

要调用构造函数,在类名后需要(),就像函数调用一样。

需要以下其中一项:

  • ()用于构造函数调用。例如new Vehicle()new Vehicle(...)
  • {}作为初始化程序,例如new Vehicle { year = 2010, mileage = 10000}
  • []用于数组,例如new int[3]new int[]{1, 2, 3}甚至只是new []{1, 2, 3}

答案 1 :(得分:4)

语法应为:

Vehicle my_Car = new Vehicle();

答案 2 :(得分:2)

尝试new Vehicle()

答案 3 :(得分:1)

假设您正在使用C#3或更高版本,您还可以使用隐式类型并执行此操作:

var my_Car = new Vehicle();

两种情况都会产生相同的IL。

答案 4 :(得分:0)

只需进一步说明并添加参考链接, 使用new Operator语法分配新内存空间的语法是, 创建对象

 Class1 obj  = new Class1();

创建匿名类型的实例

      var query = from cust in customers  
         select new { Name = cust.Name, Address = cust.PrimaryAddress };

为值类型调用默认构造函数

int i = new int();  

简而言之,正如上面的回答已经说明的那样,缺少括号是为对象动态分配内存所必需的。