我正在编写一个类,每当我开始编写构造函数时,文本变为蓝色表示它与类相关,但是,只要我为参数添加()括号,它就会变成黑色,就像它是正常的一样方法和编译器抱怨它需要一个返回类型。
以下是主要表格:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Kat
{
public partial class Form1 : Form
{
Cat[] catArray = new Cat[7];
catArray[0] = new Cat("Tom", "Tiger", "India", 'm', 10);
Cat tiger2 = new Cat("Kyle", "Tiger", "India", 'm', 4);
public Form1()
{
InitializeComponent();
}
}
}
这是班级:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kat
{
class Cat
{
private string _name, _species, _country;
private char _gender;
private int _age;
public Cat(string name, string species, string country, char gender, int age)
{
_name = name;
_species = species;
_country = country;
_gender = gender;
_age = age;
}
}
}
它肯定不起作用,因为我不能用它来构造一个对象。这是我的IDE的精确副本,它位于主类的命名空间中。
主类中的错误是: “错误3方法必须具有返回类型” 和 “错误1数组大小无法在变量声明中指定(尝试使用'new'表达式初始化)” 和 “错误8'Kat.Form1.catArray'是'字段',但用作'类型'” 和 “错误10找不到类型或命名空间名称'tiger1'(您是否缺少using指令或程序集引用?)”
有更多错误,但它们或多或少重复。
如果您创建传统的“Cat tiger1 = ...”,对象似乎会实例化,但是当您尝试将其放入数组时,错误确实会出现。
答案 0 :(得分:4)
您在方法之外有非初始化代码:
public partial class Form1 : Form
{
Cat[] catArray = new Cat[7];
catArray[0] = new Cat("Tom", "Tiger", "India", 'm', 10); // not legal
Cat tiger2 = new Cat("Kyle", "Tiger", "India", 'm', 4);
public Form1()
{
InitializeComponent();
}
}
将它放在表单的构造函数中:
public partial class Form1 : Form
{
Cat[] catArray = new Cat[7];
Cat tiger2 = new Cat("Kyle", "Tiger", "India", 'm', 4);
public Form1()
{
catArray[0] = new Cat("Tom", "Tiger", "India", 'm', 10);
InitializeComponent();
}
}
编译器用于解析代码的算法正在绊倒我的无效语法,无法准确描述真正的问题。
答案 1 :(得分:1)
请注意以下事项:
如果您尝试在上面的1.和2.之间进行混合,则会出现编译时错误。
当您开始输入时:
void
开发环境(Visual Studio)会认为public Cat
是方法,属性或字段的类型。当您继续使用该空间和该成员的名称时会发生这种情况。而是继续使用左括号:
Cat
开发环境意识到这必须是构造函数(没有类型,只是成员名称),因此它会更改为成员使用的颜色,而不是用于 types 成员的颜色
我现在在你的问题中看到更多细节。你有:
public Cat(
这两行中的最后一行是非法的。你不能直接在类这样的类中输入数组。考虑将其移动到构造函数体:public partial class Form1 : Form
{
Cat[] catArray = new Cat[7];
catArray[0] = new Cat("Tom", "Tiger", "India", 'm', 10);