public void SetSalary(string sal)
{
salary = Convert.ToString(sal);
}
Вы преобразовываете параметр , который уже является строкой , в строку и пытаетесь присвоить его полю типа double.
salary = Convert.ToDouble(sal); // one way
salary = double.Parse(sal); // another way
Обратите внимание, что эти преобразования могут завершиться неудачей, если строка имеет неправильный числовой формат. double.TryParse
может быть полезно, но, вероятно, это исключение, которое должно распространяться на ваших абонентов, когда они отправляют неверный ввод. Учитывая все вышесказанное, я бы оставил вашим вызывающим сторонам преобразовать значение в соответствующий тип и просто раскрыть свойство double. Нет необходимости усложнять ситуацию в вашем классе.
В этом отношении для значения, которое должно представлять заработную плату, вам следует рассмотреть возможность использования более подходящего типа decimal
. Он предназначен для хранения финансовых ценностей.
decimal salary;
// elsewhere
salary = Convert.ToDecimal(sal);
salary = decimal.Parse(sal);