c# - update access vba
c#short si la sentencia no funciona con int?(int=nulo) (5)
Estoy intentando acortar mi código usando short-if:
int? myInt=myTextBox.Text == "" ? null :
Convert.ToInt32(myTextBox.Text);
Pero recibo el siguiente error: El tipo de expresión condicional no se puede determinar porque no hay una conversión implícita entre '''' e ''int''
Los siguientes trabajos:
int? myInt;
if (myTextBox.Text == "") //if no text in the box
myInt=null;
else
myInt=Convert.ToInt32(myTextBox.Text);
Y si reemplazo el ''nulo'' en entero (digamos ''4''), también funciona:
int? myInt=myTextBox.Text == "" ? 4:
Convert.ToInt32(myTextBox.Text);
Lo que necesitamos es hacerle saber al compilador que ambas partes de la expresión if (if y else) son las mismas. Y es por eso que C # contiene la palabra predeterminada :
int? myInt=myTextBox.Text == ""
? default(int?)
: Convert.ToInt32(myTextBox.Text);
Mi sugiero lo siguiente?
int value;
int? myInt = ( int.TryParse(myTextBox.Text, out value ) ) ? value : default(int?);
Pruebe esto en su lugar:
int? myInt=myTextBox.Text == "" ? (int?)null : Convert.ToInt32(myTextBox.Text);
int? myInt=myTextBox.Text == "" ? (int?)null :
Convert.ToInt32(myTextBox.Text);
int number =!string.IsNullOrEmpty(temp) ? Convert.ToInt32(temp) : (int?) null;