作者:风华绝代LL58 | 来源:互联网 | 2022-12-06 19:45
我有一个本地化字符串,显然如果设置为null导致视图中出现问题.所以我的解决方案就是把它串起来.
_localizer["Controller_Account_ResetPassword_ResetFailed"].ToString();
在代码审查期间,我的同事提醒我.ToString()不是空的安全.虽然本地化不太可能是空的,但我猜它可能是.他建议如下.
TempData["Message"] = $"{_localizer["Controller_Account_ResetPassword_ResetFailed"]}";
我有两个问题.
为什么$"{var}"null安全,而.ToString()不是.
是否有更好的方法,因为他的解决方案对我来说难看.
V0ldek..
7
首先,原因是它基本上被反编译为
var arg = _localizer["Controller_Account_ResetPassword_ResetFailed"];
string.Format("{0}", arg);
并string.Format
做了null
关于它的参数检查,并与自动替换它们string.Empty
.
其次,这个解决方案很漂亮,字符串插值是一个巧妙的工具.你应该用它:)
编辑:
我有点忽略了这里的事实,字符串插值仅用于解决null
问题.有些人指出这是不必要的,并且每个人都应该喜欢字符串插值这样的事情:
_localizer["Controller_Account_ResetPassword_ResetFailed"]?.ToString() ?? "";
会是一个更好的选择.
1> V0ldek..:
首先,原因是它基本上被反编译为
var arg = _localizer["Controller_Account_ResetPassword_ResetFailed"];
string.Format("{0}", arg);
并string.Format
做了null
关于它的参数检查,并与自动替换它们string.Empty
.
其次,这个解决方案很漂亮,字符串插值是一个巧妙的工具.你应该用它:)
编辑:
我有点忽略了这里的事实,字符串插值仅用于解决null
问题.有些人指出这是不必要的,并且每个人都应该喜欢字符串插值这样的事情:
_localizer["Controller_Account_ResetPassword_ResetFailed"]?.ToString() ?? "";
会是一个更好的选择.