C# 正确处理空值
我有以下代码-C# 正确处理空值,c#,asp.net,.net,null,C#,Asp.net,.net,Null,我有以下代码- int lat = System.Convert.ToInt16(latTextBox1.Text); 这发生在已更改的事件上 然而,我的代码在这行上被破坏了- Input string was not in a correct format. 其中latTextBox1.Text=”,为空字符串。 我认为这是破坏性的,因为它无法将空字符串转换为空值 如何修改代码以解释空值?在尝试将当前值转换为整数之前,应首先检查当前值是否为空值,请查看以下代码片段 int-lat=0
int lat = System.Convert.ToInt16(latTextBox1.Text);
这发生在已更改的事件上
然而,我的代码在这行上被破坏了-
Input string was not in a correct format.
其中latTextBox1.Text
=”
,为空字符串。
我认为这是破坏性的,因为它无法将空字符串转换为空值
如何修改代码以解释空值?在尝试将当前值转换为整数之前,应首先检查当前值是否为空值,请查看以下代码片段 int-lat=0
If(! string.IsNullorEmpty(latTextBox1.Text))
{
lat = System.Convert.ToInt32(latTextBox1.Text);
}
// use your lat variable here
更新:
从上面的注释来看,lat
可能包含NULL
值,因此必须将其设置为可为NULL的Int,以使其包含NULL值
考虑这个更新的代码片段
智力?lat=0
If(! string.IsNullorEmpty(latTextBox1.Text))
{
lat.value = System.Convert.ToInt32(latTextBox1.Text);
}
// use your lat variable here by accessing the lat.value property
注意:纬度和经度值应存储在双精度数据类型中,以保持精度。在尝试将当前值转换为整数之前,应首先检查当前值是否为空值,请检查以下代码段
int lat = 0;
if (Int32.TryParse(laTextBox1.Text, out lat))
{
//success, textbox contained an int, now lat has the value of that int
}
else
{
//failure, textbox did not contain an int
}
int-lat=0
If(! string.IsNullorEmpty(latTextBox1.Text))
{
lat = System.Convert.ToInt32(latTextBox1.Text);
}
// use your lat variable here
更新:
从上面的注释来看,lat
可能包含NULL
值,因此必须将其设置为可为NULL的Int,以使其包含NULL值
考虑这个更新的代码片段
智力?lat=0
If(! string.IsNullorEmpty(latTextBox1.Text))
{
lat.value = System.Convert.ToInt32(latTextBox1.Text);
}
// use your lat variable here by accessing the lat.value property
注意:纬度和长度值应存储在双精度数据类型中,以保持精度。您必须检查正在设置的字符串:
int lat = 0;
if (Int32.TryParse(laTextBox1.Text, out lat))
{
//success, textbox contained an int, now lat has the value of that int
}
else
{
//failure, textbox did not contain an int
}
int lat = 0;
if (string.IsNullOrEmpty(latTextBox1.Text)
{
// Your null case here
}
else
{
lat = System.Convert.ToInt16(latTextBox1.Text);
}
尽管:
int lat = 0;
if (!Int32.TryParse(latTextBox1.Text, out lat)
{
// Error handling here
}
可能是更好的方法,因为它处理非数字输入。您必须检查正在设置的字符串:
int lat = 0;
if (string.IsNullOrEmpty(latTextBox1.Text)
{
// Your null case here
}
else
{
lat = System.Convert.ToInt16(latTextBox1.Text);
}
尽管:
int lat = 0;
if (!Int32.TryParse(latTextBox1.Text, out lat)
{
// Error handling here
}
可能是更好的方法,因为它可以处理非数字输入。您可以使用以下方法:
Int16.TryParse
:
或者,您可以在执行逻辑之前检查字符串是否为null或空:
if (!string.IsNullOrEmpty(latTextBox1.Text)) {
lat = System.Convert.ToInt16(latTextBox1.Text);
}
您可以使用以下方法:
Int16.TryParse
:
或者,您可以在执行逻辑之前检查字符串是否为null或空:
if (!string.IsNullOrEmpty(latTextBox1.Text)) {
lat = System.Convert.ToInt16(latTextBox1.Text);
}
好的,根据您的评论,您可以使用:
int? lat = string.IsNullOrEmpty(latTextBox1.Text)
? (int?)null : Convert.ToInt32(latTextBox1.Text);
int?
是可为空的int。好的,根据您的评论,您可以使用:
int? lat = string.IsNullOrEmpty(latTextBox1.Text)
? (int?)null : Convert.ToInt32(latTextBox1.Text);
int?
是一个可为空的int。嗯,Convert.ToInt16
并不意味着将空字符串转换为空值。。。实际上它不能,因为返回类型是不可为空的Int16
(akashort
)
我怀疑你实际上想要的是:
int lat;
if (int.TryParse(latTextBox1.Text, out lat))
{
// Use lat
}
else
{
// Invalid or empty input. Handle appropriately.
}
如果您想将空字符串与无效输入进行不同的处理,则需要显式地执行该操作——尽管您还应该考虑“空白是否等于”“空”或“无效”。< /P> < P>好,<代码>转换。ToTut16//C>不意味着将空字符串转换为空值。实际上它不能,因为返回类型是不可为空的
Int16
(akashort
)
我怀疑你实际上想要的是:
int lat;
if (int.TryParse(latTextBox1.Text, out lat))
{
// Use lat
}
else
{
// Invalid or empty input. Handle appropriately.
}
如果您想将空字符串与无效输入进行不同的处理,则需要显式地执行该操作——尽管您还应该考虑“空白是否等于”“空”或“无效”。
< P>如何简单:int? lat = null;
int dummyLat;
if (Int32.TryParse(latTextBox1.Text, out dummyLat)
lat = dummyLat;
旁注:我从未在
TextChanged
事件中转换字符串!为什么?因为每次按键都会触发一个事件!使用其他触发器启动转换(例如按钮)。简单的:
int? lat = null;
int dummyLat;
if (Int32.TryParse(latTextBox1.Text, out dummyLat)
lat = dummyLat;
旁注:我从未在
TextChanged
事件中转换字符串!为什么?因为每次按键都会触发一个事件!使用其他触发器启动转换(例如按钮)。一行:
int lat = System.Convert.ToInt16(latTextBox1.Text.Length == 0 ? 0 : latTextBox1.Text);
基本上与coalesce类似,如果latTextBox1.Text没有值,请将其设置为零
否则,latTextBox1.Text中的值为一行:
int lat = System.Convert.ToInt16(latTextBox1.Text.Length == 0 ? 0 : latTextBox1.Text);
基本上与coalesce类似,如果latTextBox1.Text没有值,请将其设置为零
否则,如果
latTextBox1.Text中的值为空,您希望lat
中的值是什么?您也不是在调用Convert.ToIn16
并将其分配给int
-您应该使用Convert.ToInt32
。在数据库中,它允许为null,因此null将是默认值,而不是零,因为lat实际上代表纬度,而“0”是一个有效的纬度值,因此必须为空。您可以使用客户端Valdiator来消除客户端的一组问题(当然您也需要服务器端验证,因为客户端验证可以忽略,但这需要一些技巧,而且很少发生,总之,使用Int32.TryParse()
将字符串安全地转换为int)@sll:从上面的代码来看,这是一个windows应用程序,不是web@Jambo为什么要将纬度存储为int
?不需要精确性吗?如果latTextBox1.Text
为空,您希望lat
是什么?您也不是在调用Convert.ToIn16
并将其分配给int
-您应该使用Convert.ToInt32
。在数据库中,它允许为null,因此null将是默认值,而不是零,因为lat实际上代表纬度,而“0”是一个有效的纬度值,因此必须为空。您可以使用客户端Valdiator来消除客户端的一组问题(当然您也需要服务器端验证,因为客户端验证可以忽略,但这需要一些技巧,而且很少发生,总之,使用Int32.TryParse()
将字符串安全地转换为int)@sll:从上面的代码来看,这是一个windows应用程序,不是web@Jambo为什么要将纬度存储为int
?不需要精确性吗?不工作,因为lat
在块内声明,因此不能在块外使用。此外,它将在if
块中抛出编译器错误,因为