声明一个体,因为它没有被标记为抽象、外部或部分

本文关键字:抽象 记为 外部 一个 因为 声明 | 更新日期: 2023-09-27 18:17:41

嗨,我有一些麻烦,使这段代码运行,因为我得到一个运行时错误的Kennel.Kennel()必须声明一个主体,因为它没有被标记为抽象,外部,或部分。请建议和帮助,如果你可以。感谢。

using System;
using System.Collections.Generic;
using System.Text;
public class Kennel : IComparable<Kennel>
{
    private string _name;
    private string _breed;
    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
    public string Breed
    {
        get { return _breed; }
        set { _breed = value; }
    }
    public override string ToString()
    {
        return String.Format("Name: {0}, Breed: {1}", Name, Breed);
    }
    public Kennel();
    public Kennel(string name, string breed)
    {
        this._name = name;
        this._breed = breed;
    }
    #region #IComparable<Kennel> Members
    public int CompareTo(Kennel other)
    {
        return other.Name.CompareTo(this.Name);
    }
    #endregion
}

class Run
{
public static void Main()
        {
            List<Kennel> kennels = new List<Kennel>();
            kennels.Add(new Kennel("Alan", "French Bulldog"));
            kennels.Add(new Kennel("Larry", "English Terrier"));
            kennels.Add(new Kennel("Moe", "Gold Retriever"));
            kennels.Add(new Kennel("Curly", "Chihuahua"));
            foreach (Kennel k in kennels)
            {
                Console.WriteLine("Name: {0}, Breed: {1}", k.Name, k.Breed);
            }

            kennels.Sort();
            foreach (Kennel k in kennels)
            {
                Console.WriteLine("Name: {0}, Breed: {1}", k.Name, k.Breed);
            }

        }
}

声明一个体,因为它没有被标记为抽象、外部或部分

public Kennel();

这没有意义。

对于空的无参数构造函数,仍然需要一个主体:

public Kennel()
{}

您的默认构造函数Kennel没有实现/body

代替

public Kennel(); 

 public Kennel() {}

我猜你的错误在这一行:

public Kennel();

你正在声明一个方法,但是没有实现。要么删除它(这就是我要做的),要么将其更改为:

public Kennel() {}

如果你的目的是防止人们在没有提供namebreed值的情况下构造一个对象,你可以把这个构造函数设为私有:

private Kennel() {}

你到底有什么不明白的?Kennel的构造函数必须声明一个主体,这有什么不清楚的吗?

如果你想让body为空,那么就声明它为空:

    public Kennel() { }