为什么构造函数链接上的冒号不起作用?

why colon on constructor chaining doesn't work?

我今天自学时遇到了问题,我确实仔细按照讲座结构中的所有内容进行了操作,但最终遇到了 CS1073 问题...

using System;
using System.Collections.Generic;
using System.Text;

namespace Shape_Rectangle
{
    class AExample
    {
        public void animal()
        {
            Console.WriteLine("C A");
        }
        public void animal(string p1)
        {
            Console.WriteLine("C B" + p1);
        }
        public void animal(string p1, string p2) : this(p1)
        {
            Console.WriteLine("C C" + p2);
        }
    }
}

它一直在说这个 -> public void animal(string p1, string p2) : this(p1) 中的“:” 有问题有人知道我在这里做错了什么吗?

您认为冒号用于链接构造函数的想法是正确的。但是,您的构造函数格式不正确,因此表现得像方法。

以下是微软文档的摘录:

A constructor is a method whose name is the same as the name of its type. Its method signature includes only an optional access modifier, the method name and its parameter list; it does not include a return type.

由于您的 class 称为“AExample”,因此您的构造函数也应称为“AExample”而不是“animal”。您的构造函数也不应包含 return 类型,在本例中为“void”。

要修复您的代码,试试这个:

class AExample
{
    public AExample()
    {
        Console.WriteLine("C A");
    }
    public AExample(string p1)
    {
        Console.WriteLine("C B" + p1);
    }
    public AExample(string p1, string p2) : this(p1)
    {
        Console.WriteLine("C C" + p2);
    }
}