Ошибка в операторе if - невозможно неявно преобразовать тип в 'bool' - PullRequest
4 голосов
/ 16 мая 2009

У меня проблема с преобразованием типа. Я пытался код, как это (минимальный, подробный код позже):

string cityType = "City1";
int listingsToSearch = 42;
if (cityType = "City1") // <-- error on this line
{
    listingsToSearch = 1;
}

Но "если" заявление для преобразования городов, но я продолжаю получать:

не может неявно преобразовать тип 'string' в 'bool'


Чего я пытаюсь достичь: у меня есть поисковая система, у которой есть текстовое поле для текста поиска и две радиокнопки для местоположения поиска (IE City1 или City2)

Когда я получаю текст поиска и переключатели, они отображаются в виде строки

string thesearchtext, thecitytype;
thesearchtext = HttpContext.Current.Request.QueryString["s"].ToString();
thecitytype = HttpContext.Current.Request.QueryString["bt"].ToString();

Когда я получу радиокнопку города, они будут в формате "city1" или "city2".

Что мне нужно сделать, так это преобразовать городские радиокнопки в int, чтобы я мог использовать их в своем наборе данных поиска. Мне нужно конвертировать "city" в целое число 1 и "city2" в целое число 2.

Я понимаю, что это, вероятно, простое преобразование типов, но я просто не могу понять это. Пока код с if дает мне ошибку выше:

int listingsToSearch;
if (thecitytype = "City1")
{
    listingsToSearch = Convert.ToInt32(1);
}
else
{
    listingsToSearch = Convert.ToInt32(2);
}

Ответы [ 2 ]

18 голосов
/ 16 мая 2009

c # оператор равенства равен ==, а не =:

if (thecitytype == "City1")
1 голос
/ 11 июня 2009

Вот некоторый код, который вы можете использовать с NUnit, который демонстрирует другую технику для вычисления перечисления ToSearch - вы также заметите, что с этой техникой вам не нужно будет добавлять экстракт if / else и т. Д., Так как вы добавляете больше городов - Тест ниже показывает, что код будет просто пытаться прочитать целое число, начиная с «City» в метке переключателя. Также смотрите в самом низу то, что вы могли бы написать в своем основном коде

[Test]
public void testGetCityToSearch()
{

    // if thecitytype = "City1", listingToSearch = 1
    // if thecitytype = "City2", listingToSearch = 2

    doParseCity(1, "City1");
    doParseCity(2, "City2");
    doParseCity(20, "City20");        
}

public void doParseCity(int expected, string input )
{
    int listingsToSearch;
    string cityNum = input.Substring(4);
    bool parseResult = Int32.TryParse(cityNum, out listingsToSearch);
    Assert.IsTrue(parseResult);
    Assert.AreEqual(expected, listingsToSearch);
}

В своем обычном коде вы можете просто написать:

string thecitytype20 = "City20";
string cityNum20 = thecitytype20.Substring(4);
bool parseResult20 = Int32.TryParse(cityNum20, out listingsToSearch);
// parseResult20 tells you whether parse succeeded, listingsToSearch will give you 20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...