Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在添加括号时构造函数转向方法?_C#_Class_Constructor - Fatal编程技术网

C# 为什么在添加括号时构造函数转向方法?

C# 为什么在添加括号时构造函数转向方法?,c#,class,constructor,C#,Class,Constructor,我正在编写一个类,每当我开始编写构造函数时,文本都会变为蓝色,表示它正在关联该类。然而,当我为参数添加()括号时,它会变为黑色,好像它是一个普通方法,编译器会抱怨它需要返回类型 以下是主要形式: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Te

我正在编写一个类,每当我开始编写构造函数时,文本都会变为蓝色,表示它正在关联该类。然而,当我为参数添加()括号时,它会变为黑色,好像它是一个普通方法,编译器会抱怨它需要返回类型

以下是主要形式:

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无法在变量声明中指定数组大小(请尝试使用‘新’表达式初始化)” 和 “错误8‘Kat.Form1.catArray’是一个‘字段’,但与‘类型’一样使用” 和 “错误10找不到类型或命名空间名称‘tiger1’(是否缺少using指令或程序集引用?)

有更多的错误,但它们或多或少是重复的

如果您使用传统的“Cat tiger1=…”创建对象,则该对象似乎会实例化,但当您尝试将其放入数组时,会出现错误。

请注意以下几点:

  • 构造函数必须与封闭类(struct)具有完全相同的名称,并且不能具有返回类型
  • 方法的名称必须与类(struct)的名称不同,并且必须包含返回类型(可以是
    void
    或普通类型)
  • 如果你想在1和2之间混合。二,。在上面,您得到了编译时错误

    开始键入时:

    public Cat
    
    开发环境(Visual Studio)会认为
    Cat
    是方法、属性或字段的类型。如果继续使用空格和该成员的名称,则会发生这种情况。如果改为使用左括号继续:

    public Cat(
    
    开发环境意识到这必须是一个构造函数(没有类型,只有成员名),因此它将更改为用于成员的颜色,而不是用于成员类型的颜色


    我现在在你的问题中看到了更多细节。你有:

    public partial class Form1 : Form
    {
      Cat[] catArray = new Cat[7];
    
      catArray[0] = new Cat("Tom", "Tiger", "India", 'm', 10);
    
    这两行中的最后一行是非法的。这样的类中不能直接有数组项赋值。考虑将其移动到构造函数体:<代码>公共窗体({ CARTARSARS(0)=…} /代码>

    < P>注意:
  • 构造函数必须与封闭类(struct)具有完全相同的名称,并且不能具有返回类型
  • 方法的名称必须与类(struct)的名称不同,并且必须包含返回类型(可以是
    void
    或普通类型)
  • 如果你想在1和2之间混合。二,。在上面,您得到了编译时错误

    开始键入时:

    public Cat
    
    开发环境(Visual Studio)会认为
    Cat
    是方法、属性或字段的类型。如果继续使用空格和该成员的名称,则会发生这种情况。如果改为使用左括号继续:

    public Cat(
    
    开发环境意识到这必须是一个构造函数(没有类型,只有成员名),因此它将更改为用于成员的颜色,而不是用于成员类型的颜色


    我现在在你的问题中看到了更多细节。你有:

    public partial class Form1 : Form
    {
      Cat[] catArray = new Cat[7];
    
      catArray[0] = new Cat("Tom", "Tiger", "India", 'm', 10);
    

    这两行中的最后一行是非法的。这样的类中不能直接有数组项赋值。考虑将其移动到构造函数体:<代码>公共窗体({CasAldS[0)=…} <代码> < /p> < p>您在方法之外有非初始化代码:

    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();
        }
    }
    

    编译器用于解析代码的算法由于语法无效而出错,无法准确描述真正的问题所在。

    方法之外有非初始化代码:

    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();
        }
    }
    

    编译器用于解析代码的算法由于语法无效而出错,无法准确描述真正的问题所在。

    确切的错误消息是什么?它对我来说很好,但我要补充的是,默认的空构造函数是多余的,除非您还指定了带参数的构造函数。您是否遇到编译错误?如果代码未编译,请尝试重新启动VS,有时会出现错误,快速重新启动会将其唤醒。请确保代码中的拼写和大小写相同,我假设您上面的代码不是IDE的复制/粘贴。它在命名空间中吗?确切的错误消息是什么?它对我来说很好,但我要补充的是,默认的空构造函数是多余的,除非您还指定了带参数的构造函数。您是否遇到编译错误?如果代码未编译,请尝试重新启动VS,有时会出现错误,快速重新启动会将其唤醒。请确保代码中的拼写和大小写相同,我假设您上面的代码不是IDE的副本/粘贴。它是否在命名空间中?这如何回答问题?为什么这会被提升?@SethKitchen我没想到他在班级成员级别上有
    catArray[0]=…
    的东西。我加了一句话,但D斯坦利更快。可能是因为我解释了键入
    )时文本颜色变化的部分,所以我被提升了。这是如何回答问题的?为什么会被提升?@SethKitchen我没想到他有
    混乱[0]=…
    类成员级别的东西。我添加了一条注释,但是D Stanley更快。可能我被提升了,因为我解释了关于键入
    时文本颜色变化的部分(
    )。