4

我在转换类型时遇到问题。我正在尝试这样的代码(稍后会使用最少的详细代码):

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

但是“如果”声明转换城市但我不断得到:

无法将类型“字符串”隐式转换为“布尔”


我想要实现的目标:我有一个搜索引擎,它有一个用于搜索文本的文本框和两个用于搜索位置的单选按钮(IE City1 或 City2)

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

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

当我收到城市单选按钮时,它们将采用“city1”或“city2”的格式。

我需要做的是将城市单选按钮转换为 int,以便我可以在搜索数据集中使用它们。我需要转换"city"为 integer1"city2"integer 2

我知道这可能是一个简单的类型转换,但是我无法弄清楚。到目前为止,if上面的代码给了我错误:

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

2 回答 2

18

c# 相等运算符is==和 not =

if (thecitytype == "City1")
于 2009-05-16T02:28:43.690 回答
1

这里有一些代码可以与 NUnit 一起使用,它演示了另一种计算listingToSearch 的技术——你还会注意到,使用这种技术,你不需要添加提取 if/else 等,因为你添加了更多城市——下面的测试演示了该代码将尝试读取单选按钮标签中“城市”之后开始的整数。另外,请参阅最底部以了解您可以在主代码中编写的内容

[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
于 2009-06-11T17:56:11.153 回答