C # Runtime Error Объявлять тело, потому что оно не помечено как абстрактное, внешнее или частичное - PullRequest
1 голос
/ 14 декабря 2011

Привет, у меня возникли некоторые проблемы с запуском этого лакомого кусочка кода, так как я получаю ошибку времени выполнения для 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);
            }


        }
}

Ответы [ 4 ]

1 голос
/ 14 декабря 2011

Ваш конструктор по умолчанию для Кеннел не имеет реализации / body

Заменить

public Kennel(); 

на

 public Kennel() {}
1 голос
/ 14 декабря 2011

Я предполагаю, что ваша ошибка в этой строке:

public Kennel();

Вы объявляете метод, но реализации нет. Либо удалите его (это то, что я бы сделал), либо измените его на:

public Kennel() {}

Если ваше намерение состоит в том, чтобы запретить людям создавать объекты без предоставления значений name и breed, вы можете сделать этот конструктор частным:

private Kennel() {}
1 голос
/ 14 декабря 2011
public Kennel();

Это не имеет смысла.

Для пустого конструктора без параметров вам все еще нужно тело:

public Kennel()
{}
0 голосов
/ 14 декабря 2011

Так что вы не понимаете точно? Конструктор Kennel должен объявить тело, что в этом не ясно?

Если вы хотите, чтобы тело было пустым, тогда объявите его пустым:

    public Kennel() { }

Вы НЕ можете объявить тело.

...