コード例 #1
0
        public void Cast_Test()
        {
            var nullClass2 = null as Class2;
            var nullClass1 = nullClass2.Cast <Class1>();

            Assert.AreEqual(nullClass1, null);
            Assert.AreEqual(nullClass2, null);

            Class1 class3 = new Class3();
            { var result = class3.Cast <Class1>(); }
            Class2 class2 = new Class2();

            Assert.ThrowsException <InvalidCastException>(() => { class2.Cast <Class3>(); });
            Assert.ThrowsException <InvalidCastException>(() => { var a = (int)(object)class2; });
            Assert.ThrowsException <InvalidCastException>(() => { var a = class2.Cast <int>(); });
            Assert.ThrowsException <InvalidCastException>(() => { class2.Cast <short>(); });
            Assert.ThrowsException <InvalidCastException>(() => { class2.Cast <double>(); });
            Assert.ThrowsException <InvalidCastException>(() => { class2.Cast <char>(); });
        }