Csharp/CSharp Tutorial/Operator/as — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 15:31, 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
- expr is the expression being cast to type.
- On succeed, a reference to type is returned.
- Otherwise, a null reference is returned.