c# - error - no se puede convertir implícitamente el tipo ''string'' en string[]
Error en la instrucción if: no se puede convertir implícitamente el tipo a ''bool'' (2)
Estoy teniendo un problema al convertir el tipo. Estaba intentando un código como este (código mínimo y detallado más adelante):
string cityType = "City1";
int listingsToSearch = 42;
if (cityType = "City1") // <-- error on this line
{
listingsToSearch = 1;
}
Pero la declaración "si" para convertir las ciudades pero sigo obteniendo:
no puede convertir implícitamente el tipo ''cadena'' en ''bool''
Lo que intento lograr: tengo un motor de búsqueda que tiene un cuadro de texto para el texto de búsqueda y dos botones de opción para la ubicación de búsqueda (IE City1 o City2)
Cuando recibo el texto de búsqueda y los botones de radio, tienen la forma de una cadena
string thesearchtext, thecitytype;
thesearchtext = HttpContext.Current.Request.QueryString["s"].ToString();
thecitytype = HttpContext.Current.Request.QueryString["bt"].ToString();
Cuando reciba el botón de radio de la ciudad, estarán en el formato de "ciudad1" o "ciudad2".
Lo que tengo que hacer es convertir los botones de radio de la ciudad en un int para que pueda usarlos en mi conjunto de datos de búsqueda. Necesito convertir "city"
a entero 1
y "city2"
a entero 2
.
Entiendo que esta es probablemente una conversión de tipo simple, pero no puedo entenderlo. Hasta ahora el código con if
me da el error anterior:
int listingsToSearch;
if (thecitytype = "City1")
{
listingsToSearch = Convert.ToInt32(1);
}
else
{
listingsToSearch = Convert.ToInt32(2);
}
Aquí hay un código que puedes usar con NUnit que demuestra otra técnica para calcular listingToSearch: también notarás que con esta técnica, no necesitarás agregar extract if / else, etc. a medida que agregas más ciudades - la prueba siguiente demuestra que el código simplemente tratará de leer el número entero que comienza después de "Ciudad" en la etiqueta del botón de opción. Además, vea la parte inferior de lo que podría escribir en su código principal
[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);
}
En tu código normal, puedes escribir:
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
El operador c # equality es ==
y no =
:
if (thecitytype == "City1")