#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 используется поверх вашего файла.