Ошибка: Не удается преобразовать из группы методов в строку

#c# #c#-record-type

Вопрос:

Я следую учебнику и получаю сообщение об ошибке:

«не удается преобразовать из» группы методов » в «строку»».

Я использую платформу .net 5.0 в проекте cs.

Ниже приведен код. На линии появляется ошибка:

 yield return new Student(_names[index].First, _names[index].Last);
 

StudentRepository.cs

 public record Name(string First, string Last);

public class StudentRepository: IRepository<Student>
{
    private Name[] _names = new Name[10];

    public StudentRepository()
    {
        _names[0] = new("Steve", "Smith");
        _names[1] = new("Chad", "Smith");
        _names[2] = new("Ben", "Smith");
        _names[3] = new("Eric", "Smith");
        _names[4] = new("Julie", "Lerman");
        _names[5] = new("David", "Starr");
        _names[6] = new("Aaron", "Skonnard");
        _names[7] = new("Aaron", "Stewart");
        _names[8] = new("Aaron", "Powell");
        _names[9] = new("Aaron", "Frost");
    }

    public IEnumerable<Student> List()
    {
        int index = 0;
        while (index < _names.Length)
        {
            yield return new Student(_names[index].First, _names[index].Last);
            index  ;
        }
    }
}
 

Студент.cs

 public class Student: IComparable<Student>
{
    public static int studentCounter = 0;

    public string FirstName { get; set; }
    public string LastName { get; set; }

    public Student(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
        studentCounter  ;
    }

    public override string ToString()
    {
        return $"{FirstName} {LastName}";
    }

    public int CompareTo(Student other)
    {
        if (other is null) return 1;

        if (other.LastName == this.LastName)
        {
            return this.FirstName.CompareTo(other.FirstName);
        }
        return this.LastName.CompareTo(other.LastName);
    }
}
 

Комментарии:

1. @OlivierRogier — возможно, это связано с использованием типа записи?

2. @OlivierRogier участники уже являются публичными

3. Я не могу воспроизвести ошибку: код просто работает так, как ожидалось…

4. Является ли переименование Первым и последним в FirstName и LastName решает ли проблему? Если это так, то это может быть ошибка.

5. @rds80 Я запустил ваш код, но все прошло хорошо, и я не смог найти никакой ошибки.

Ответ №1:

Я думаю, что компилятор может путать ваше первое свойство с первым() методом Linq. Вы используете .NET 5 или предварительную версию .NET 6?

Вы можете попробовать изменить имена Имя и Фамилия на Имя и фамилию, чтобы узнать, связано ли это с этим, или удалить систему.Linq используется поверх вашего файла.