вторник, 30 августа 2011 г.

AS in C#

namespace ConsoleApplication1
{     
    class Program
    {
        static void Main(string[] args)
        {
            Object st1 = new ST1();
            string S1 = String.Empty;
            S1 = (String)st1;
            S1 = st1 is String ? (String)st1 : null;
            S1 = st1 as String;
        }
    }
    //Empty class
    public class ST1 { }
}

S1 = (String)st1;  - при отладке получим ошибку : "Unable to cast object of type 'ST1' to type 'System.String'."

S1 = st1 is String ? (String)st1 : null; - Сработает корректно.

S1 = st1 as String; - Сработает корректно.

S1 = st1 as String - всего лишь укороченный синтаксис для S1 = st1 is String ? (String)st1 : null;