4

タイプの変換に問題があります。私はこのようなコードを試していました(最小限の詳細なコードは後で):

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

しかし、都市を変換する「if」ステートメントですが、私は取得し続けます:

タイプ 'string' を 'bool' に暗黙的に変換することはできません


私が達成しようとしているもの: 検索テキスト用のテキスト ボックスと検索場所用の 2 つのラジオ ボタン (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 ==and not =:

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

これは、listingToSearchを計算するための別の手法を示すNUnitで使用できるコードです-この手法では、都市を追加するときにextract 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
于 2009-06-11T17:56:11.153 に答える