SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ammine Getahun

    Ammine Getah

    21 HAZİRAN 2011
  • Engadget

    Engadget

    18 EYLÜL 2006
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009