Przygody z oprogramowaniem
  • Start
  • Szkolenia
    • Szkolenia otwarte
    • Katalog szkoleń
  • Usługi
    • Konsulting
    • Mentoring
    • Research & Development
  • Blog
  • Wiedza
    • Strefa wiedzy
    • BFsharp
    • SaaS
  • Klienci
  • Kontakt
0

is vs as – C# pod lupą

9 November, 2012-Blog, C#

Dziś zajmiemy się operatorami związanym z rzutowaniem typów. W przykładach będziemy używać następującej hierarchii:

public class Animal { }
    
public interface IMammal { }

public class Tiger : Animal, IMammal { }

Operator is służy do sprawdzenia, czy dany obiekt jest konkretnego typu, bądź czy implementuje wskazany interfejs.

object tiger = new Tiger();

if ( tiger is Animal)
{
    Animal animal = (Animal) tiger;
}

if ( tiger is IMammal)
{
    IMammal mammal = (IMammal) tiger;
}

Natomiast operator as rzutuje dane obiekt o ile jest on określonego typu, w przeciwnym wypadku zwraca null. Tutaj warto zauważyć, że możemy tylko rzutować na typy, które są nullowalne – nie możemy używać struktur (value type’ów).

object tiger = new Tiger();
Animal animal2 = tiger as Animal;
if ( animal2 != null)
{
    // Do something
}

IMammal mammal2 = tiger as IMammal;
if (mammal2 != null)
{
    // Do something
}

Kategorie

Architecture BFsharp Blog Business Framework C# CqRS DDD Debugging DSL EntityFramework Formula JavaScript Linq NHibernate SaaS Silverlight SQL Visual Studio WPF Wzorce

O mnie


RSS Feed

© macmichal.pl 2011 Wszystkie prawa zastrzeżone

Używamy ciasteczek, jeśli kontynuujesz zwiedzanie strony, zakładamy, że wyrażasz zgodę na ich używanie.