我的代码当前如下所示:
if (App.cardSetWithWordCount == null)
App.cardSetWithWordCount = App.DB.GetCardSetWithWordCount(Settings.cc.Text());
我意识到这已经几乎是一个单行检查,但是想知道最新版本的C#是否存在一种编码这种结构的方法,它甚至更干净?
答案 0 :(得分:4)
没有更干净的方法,只有更冗长和更易读的方法,我认为您应该对自己拥有的东西感到满意。
if (App.cardSetWithWordCount == null)
App.cardSetWithWordCount = App.DB.GetCardSetWithWordCount(Settings.cc.Text());
尽管您可以做到
App.cardSetWithWordCount = App.cardSetWithWordCount ?? App.DB.GetCardSetWithWordCount(Settings.cc.Text());
其他资源
??运算符称为空值运算符。它返回 如果操作数不为null,则为左侧操作数;否则为false。否则返回 右操作数。
答案 1 :(得分:1)
以下一些小的修改:
.Any()
只是添加了一个其他的更具确定性的方法。另外,如果您的计数是列表,那么您也可以使用if (Title != null
&& this.Title.Length > 0 )
{
// safe to use
}
。
C#6.0随附Monadic null checking。
根据上面的链接:
之前:
if (this.Title?.Length > 0 )
{ ... }
之后:
import { Injectable, NgModule} from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse} from '@angular/common/http';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import 'rxjs/add/operator/do';
@Injectable()
export class HttpsRequestInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const dupReq = req.clone({ headers: req.headers
.set('Access-Control-Allow-Origin','*')
.set('Content-Type', 'application/json')
.set('Authorization', 'Basic XXXXXXXXXXXXXXXXXXXXXX')
.set('Access-Control-Allow-Credentials','true') });
return next.handle(dupReq);
}
};
@NgModule({
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: HttpsRequestInterceptor, multi: true }
]
})