我遇到转换类型的问题。我正在尝试这样的代码(最小的,详细的代码):
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);
}
答案 0 :(得分:18)
c# equality operator为==
而不是=
:
if (thecitytype == "City1")
答案 1 :(得分: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