C# as

C#里的类型转换

参考 https://zhidao.baidu.com/question/588682617.html
从下到上,可以直接转换。
从上到下,必须显式转换(强转)。而且“上”和“下”必须同时继承 或实现了同一个类型 或 接口 才可以用 as。

as概念

as:非强转类型。

强转类型:一般在变量前面加:(所需类型)。如果转换失败,系统就会报错。
如果用as,就不会报错,转换失败的话,就会返回null。as后面的类型必须可以为null 。

as示例

参见上面链接。

下面是我自己的示例:
运行后报错:
System.NullReferenceException:“Object reference not set to an instance of an object.”
tempIntMes 是 null。
原因是转换失败导致tempIntMes为null,就不存在tempIntMes.message了。

using System;

namespace ConsoleApp3
{
    public class Program
    {
        public class IntMes
        {
            public int message { get; set; }
        }
        public static void Main(string[] args)
        {
            object message = 111111111;
            var tempIntMes = message as IntMes;

            //as后面的类型必须可以为null  
            //as前面除了object类型以外还可以是什么类型?
            //var tempInt = message as int;            

            Console.WriteLine("message="+message);
            Console.WriteLine("tempIntMes=" + tempIntMes.message);  //编译成功但运行时报错null,说明转换失败。转换失败的原因是message和IntMes的类型并没有同时继承(或者实现)同一个类(或者接口)。
            Console.ReadKey();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34702563/article/details/83024939
C#