Я получаю возможное непреднамеренное сравнение ссылок; чтобы получить сравнение значений, введите левую сторону для ввода "string" в операторах if в методе GetPrice. Он показывает его выделение на всех операциях if (size == "Small"). Вот мои переменные:
drinkType = GetDrinkType();
size = GetDrinkSize();
price = GetPrice(size);
private string GetDrinkType()
{
string theDrink;
theDrink = "None Selected";
if (rdoCoffee.Checked)
{
theDrink = "Coffee";
}
else if (rdoCoco.Checked)
{
theDrink = "Hot Chocolate";
}
else if (rdoSmoothie.Checked)
{
theDrink = "Smoothie";
}
return theDrink;
}
private string GetDrinkSize()
{
string theSize;
theSize = "None Selected";
if (rdoSmall.Checked)
{
theSize = "Small";
}
else if (rdoMedium.Checked)
{
theSize = "Medium";
}
else if (rdoLarge.Checked)
{
theSize = "Large";
}
return theSize;
}
private decimal GetPrice(object size)
{
decimal thePrice;
thePrice = 0;
if (size == "Small")
{
thePrice = 1.25m;
}
else if (size == "Medium")
{
thePrice = 2.50m;
}
else if (size == "Large")
{
thePrice = 3.35m;
}
return thePrice;
}
Параметр size
объявляется для object
типа, поэтому компилятор не знает его на самом деле типа string
. Таким образом, он использует равенство по умолчанию для object
type, которое является эталонным сравнением.
Если вы измените тип size
на string
, он будет использовать перегрузку оператора равенства из класса string
, который выполняет сравнение значений.
private decimal GetPrice(string size)
Попробуйте изменить "объект" в GetPrice на "string".
Предупреждение возникает, потому что вы сравниваете строку с объектом. Если вы меняете
if (size == "Small")
в
if (size.ToString() == "Small")
предупреждение будет удалено.
Поскольку в GetPrize
тип size
является object
, но вы сравниваете его со string
с size == "Large"
.
Измените сравнение со "string text".Equals(object)
как показано ниже
private decimal GetPrice(object size)
{
decimal thePrice = 0m;
if ("Small".Equals(size))
{
thePrice = 1.25m;
}
else if ("Medium".Equals(size))
{
thePrice = 2.50m;
}
else if ("Large".Equals(size))
{
thePrice = 3.35m;
}
return thePrice;
}