Существует множество проблем с этим кодом, но они могут быть не такими, какими вы считаете.
Прежде всего, Public
неправ; C# требует public
.
Во-вторых, использование местных Mgrade
странно и не нужно, но достаточно интересно не на самом деле wrong; законно выполнять задание и возвращать за один шаг. Но в этом случае вам не нужно; только return 'A';
без местного задания.
В-третьих, метод неправильный, потому что не устанавливает Grade
. Если вы собираетесь его установить класс, то он должен быть недействительным возвращения:
public void SetGrade(float score)
{
if(score >= 90.0)
{
this.grade = 'A';
}
this.grade = 'F';
}
Если вместо этого метод предназначен, чтобы быть переход от поплавков до символов, то оно должно быть статическим:
public static char ScoreToGrade(float score)
{
if(score >= 90.0)
{
return 'A';
}
return 'F';
}
Откровенно , Я был бы склонен делать то и другое:
public void SetGrade(float score)
{
this.grade = ScoreToGrade(score);
}
Там, у вас есть лучшее из обоих миров.
В-четвертых, это всего лишь стилистическая точка; Вы могли бы рассмотреть:
public char Grade { get; private set; }
компилятор будет генерировать «невидимый» подкладочный поле для вас, так что вы не должны управлять сами. Этот синтаксис означает, что Grade
может быть прочитан из любого места и написан с этого класса.
Что такое 'Mgrade' и почему вы пытаетесь его назначить? И почему свойство 'Grade' имеет капитал' P' в модификаторе доступа? (C# чувствителен к регистру.) –
Вы действительно хотите вернуть «A» или «F» - или вы хотите вернуть «A», «B», «C», «D», «E» или «F» в зависимости от «класса»? –