为什么构造函数链接上的冒号不起作用?
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);
}
}
我今天自学时遇到了问题,我确实仔细按照讲座结构中的所有内容进行了操作,但最终遇到了 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);
}
}