空传播 - 第二次空检查
Null Propagation - Second null checking
我想在 theme.VersionStamp 上插入另一个空值检查。有没有办法可以将它插入到 SequenceEqual 参数中?
if (theme.VersionStamp != null)
{
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
}
这不是必需的,因为无论如何您都在进行空检查 if (theme.VersionStamp != null){
然后继续。但是您仍然可以再次检查并传入一个默认参数,例如
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp ?? new VersionStamp()) ?? false)
此外,我会将您的第一个 null
检查扩展到以下
if (theme != null && theme.VersionStamp != null)
{
遗憾的是,无法在传递参数时添加空检查。
您可以获得的最短时间是:
if (theme?.VersionStamp == null ||
!origTheme?.VersionStamp?.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
我不会像 Rahul 那样传递默认参数,因为如果 origTheme
的 VersionStamp
等于默认值 VersionStamp
SequenceEqual
会不正确returntrue
我想在 theme.VersionStamp 上插入另一个空值检查。有没有办法可以将它插入到 SequenceEqual 参数中?
if (theme.VersionStamp != null)
{
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
}
这不是必需的,因为无论如何您都在进行空检查 if (theme.VersionStamp != null){
然后继续。但是您仍然可以再次检查并传入一个默认参数,例如
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp ?? new VersionStamp()) ?? false)
此外,我会将您的第一个 null
检查扩展到以下
if (theme != null && theme.VersionStamp != null)
{
遗憾的是,无法在传递参数时添加空检查。
您可以获得的最短时间是:
if (theme?.VersionStamp == null ||
!origTheme?.VersionStamp?.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
我不会像 Rahul 那样传递默认参数,因为如果 origTheme
的 VersionStamp
等于默认值 VersionStamp
SequenceEqual
会不正确returntrue