1 Mayıs 2009, Cuma
C# : '' anahtar kelime ve denetliyor için Değil
Bu aptalca bir soru, ama eğer bir şey belirli bir tür olup olmadığını kontrol etmek için bu kodu kullanabilirsiniz...
if (child is IContainer) { //....
Orada kontrol etmek için daha şık bir yol "DEĞİL," örnek mi?
if (!(child is IContainer)) { //A little ugly... silly, yes I know...
//these don't work :)
if (child !is IContainer) {
if (child isnt IContainer) {
if (child aint IContainer) {
if (child isnotafreaking IContainer) {
Evet, Evet... saçma bir soru....
Bazı soru işaretleri var çünkükod neye benzediğini, sadece bir yöntem başlangıcında basit bir dönüş.
public void Update(DocumentPart part) {
part.Update();
if (!(DocumentPart is IContainer)) { return; }
foreach(DocumentPart child in ((IContainer)part).Children) {
//...etc...
CEVAP
1 Mayıs 2009, Cuma
if(!(child is IContainer))
gitmek için tek operatör (IsNot
var operatör).
Yok böyle bir uzantı yöntemi oluşturabilirsiniz:
public static bool IsA<T>(this object obj) {
return obj is T;
}
ve sonra bunu kullanın:
if (!child.IsA<IContainer>())
Ve tema uygulayın:
public static bool IsNotAFreaking<T>(this object obj) {
return !(obj is T);
}
if (child.IsNotAFreaking<IContainer>()) { // ...
< / ^ hr .
Güncelleme (OP kod parçacığını göz önünde bulundurarak):
Aslında daha sonra değeri döküm olduğun için, sadece as
yerine kullanabilirsiniz:
public void Update(DocumentPart part) {
part.Update();
IContainer containerPart = part as IContainer;
if(containerPart == null) return;
foreach(DocumentPart child in containerPart.Children) { // omit the cast.
//...etc...
Bunu Paylaş:
'değişken' anahtar kelime he...
Yerli için Java anahtar kelime nedir?...
Neden yok C# 'dostum' anahta...
Geçen anahtar kelime python parametre ...
C "sanal" türetilmiş sınıf f...