Csharp/CSharp Tutorial/Operator/as — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 12:16, 26 мая 2010

as operator in class hearchy

using System; 
 
class A {} 
class B : A {} 
 
class MainClass { 
  public static void Main() { 
    A a = new A(); 
    B b = new B(); 
 
    b = a as B; // cast, if possible 
 
    if(b==null)  
      Console.WriteLine("Cast b = (B) a is NOT allowed."); 
    else 
      Console.WriteLine("Cast b = (B) a is allowed"); 
  } 
}
Cast b = (B) a is NOT allowed.

The As Operator for custom class type

using System;
interface Printable
{
    void MarginX(float factor);
    void MarginY(float factor);
}
public class Component
{
    public Component() {}
}
public class TextField: Component, Printable
{
    public TextField(string text)
    {
        this.text = text;
    }
    // implementing Printable.MarginX()
    public void MarginX(float factor)
    {
        Console.WriteLine("MarginX: {0} {1}", text, factor);
    }
    
    // implementing Printable.MarginY()
    public void MarginY(float factor)
    {
        Console.WriteLine("MarginY: {0} {1}", text, factor);
    }
    
    private string text;
}
class MainClass
{
    public static void Main()
    {
        Component[] dArray = new Component[100];
        
        dArray[0] = new Component();
        dArray[1] = new TextField("A");
        dArray[2] = new TextField("B");
        
        foreach (Component d in dArray)
        {
            Printable scalable = d as Printable;
            if (scalable != null)
            {
                scalable.MarginX(0.1F);
                scalable.MarginY(10.0F);
            }
        }
    }
}
MarginX: A 0.1
MarginY: A 10
MarginX: B 0.1
MarginY: B 10

Use the "as" operator to perform a safe cast

using System;
using System.IO;
class MainClass
{
    public static void Main() 
    {
        Object someObject = new StringReader("This is a StringReader");
        
        StringReader reader = someObject as StringReader;
        if (reader != null) 
        {
            Console.WriteLine("as: someObject is a StringReader");
        }
    }
}
as: someObject is a StringReader

Using as

You can use the as operator to cast without raising an exception if the cast fails.

The general form:


expr as type
  1. expr is the expression being cast to type.
  2. On succeed, a reference to type is returned.
  3. Otherwise, a null reference is returned.