if语句中的错误 - 无法隐式转换类型为'bool'

4

我遇到了一些类型转换的问题。我尝试使用以下代码(稍后提供最小详细代码):

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

但是,我尝试使用“if”语句来转换城市,但是我一直收到以下错误信息:

无法将类型为“string”的值隐式转换为“bool”


我的目标是:我有一个搜索引擎,其中有一个文本框用于搜索文本,以及两个单选按钮用于搜索位置(即City1或City2)

当我接收到搜索文本和单选按钮时,它们是字符串形式的

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

当我收到城市单选按钮时,它们的格式将为“city1”或“city2”。
我需要将城市单选按钮转换为整数,以便我可以在我的搜索数据集中使用它们。我需要将“city”转换为整数1,“city2”转换为整数2。
我知道这可能只是一个简单的类型转换,但我就是想不出来。目前使用if语句的代码给了我以上错误。
int listingsToSearch;
if (thecitytype = "City1")
{
    listingsToSearch = Convert.ToInt32(1);
}
else
{
    listingsToSearch = Convert.ToInt32(2);
}
2个回答

18

请注意,您也可以使用 .Equals 方法进行字符串比较,如果您来自Java世界,则可能会推荐使用该方法。但是,在比较有效字符串时,使用 ==Equals 没有区别(请参见为什么要使用String.Equals而不是==)。 - Alexei Levenkov

1

这里有一些使用NUnit的代码,演示了另一种计算listingToSearch的技术 - 您还会注意到,使用这种技术时,您不需要添加提取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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接