我需要将可空整数转换为字符串
int? a = null;
string str = a.ToString();
我怎么能在没有异常的情况下执行这个操作? 我需要得到字符串""Null""。 请指导我。
我需要将可空整数转换为字符串
int? a = null;
string str = a.ToString();
我怎么能在没有异常的情况下执行这个操作? 我需要得到字符串""Null""。 请指导我。
您可以简单地使用Convert.ToString()
方法,它可以处理空值并且不会抛出异常。
string str = Convert.ToString(a)
或者使用if
条件语句
if(a.HasValue)
{
string str = a.Value.ToString();
}
或者使用?
三元运算符
string str = a.HasValue ? a.Value.ToString() : string.Empty;
Convert
如何处理 null
值?它会像 OP 问的那样返回 "null" 吗? - Yolanull
值的异常。一旦你处理好了,就可以放置你的逻辑来获取任何值(例如从上面提到的任何选项中获取“Null”)。 - SachinConvert.ToString(a)
返回的是 ""
而不是 null
。 - Guerrillaint? a = null;
string aString = a?.ToString() ?? "null";
a
为null
时真正需要字符串"Null":string str = a.HasValue ? a.Value.ToString() : "Null";
public static string ToStringNullSafe<T>(this T value)
{
if(value == null)
{
return null;
}
else
{
return value.ToString();
}
}
我也会创建一个扩展方法,但是它的类型是Nullable而不是任何T。
public static string ToStringOrEmpty<T>(this T? t) where T : struct
{
return t.HasValue ? t.Value.ToString() : string.Empty;
}
// usage
int? a = null;
long? b = 123;
Console.WriteLine(a.ToStringOrEmpty()); // prints nothing
Console.WriteLine(b.ToStringOrEmpty()); // prints "123"
if(a.HasValue())
{
return a.Value().ToString();
}
return string.Empty;
ToString()
不再抛出异常了:https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1.tostring?view=net-5.0 - Kai Hartmann