C#中 is 和 as 运算符使用与区别

时间:2024-10-23 12:34:39

前言

       在 .NET 平台中提供了 is 和 as 两个非常有用的运算符,它们分别用于类型检查和类型转换。正确理解和使用它们可以帮助我们更好地编写类型安全和可读性更好的代码。本文将详细介绍 is 和 as 运算符的使用和区别。

is 运算符

       is 运算符用于检查对象的运行时类型是否与给定类型兼容。通过使用 is 运算符验证对象的类型是否是我们期望的。

 语法:

expression is type

expression:检查兼容性的对象,表达式可以包含变量、文字和方法调用。

type:验证表达式所依据的类型,可以包含内置类型和用户定义类型。

示例:
using System;

namespace Fountain.WinConsole.OtherDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region 内置类型
            // 声明变量
            object sundayo = "Sunday";
            // 输出 true
            Console.WriteLine((sundayo is string));
            // 声明变量
            int age = 21;
            // 输出 false
            Console.WriteLine(age is float);
            #endregion

            #region 用户自定已类型
            // 声明变量
            Product product = new Product();
            // is 运算符表达式
            if (product is Product )
            {
                Console.WriteLine(("product 是 Prodduct 类"));
            }
            ##endregion
            Console.ReadLine(); 
        }
    }
    /// <summary>
    /// 产品
    /// </summary>
    public class Product
    {
        /// <summary>
        /// 编码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
    }
}

as 运算符

        as 运算符用于对象强制转换为指定的类型。如果转换的类型与对象类型相同或兼容,则返回转换后的结果;如果不相同或不兼容,则返回 null 的结果。

语法:

expression as type

相当于:


expression is type ? (type)expression : (type)null

expression:进行类型转换的表达式。

type:转换成的目标类型。

示例:
using System;

namespace Fountain.WinConsole.OtherDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 声明对象数组
            object[] objects = new object[5];
            // 产品类
            objects[0] = new Product();
            // 订单类
            objects[1] = new Order();
            // 字符
            objects[2] = "string";
            // 整型
            objects[3] = 32;
            objects[4] = null;
            for (int i = 0; i < objects.Length; ++i)
            {
                string result = objects[i] as string;
                Console.Write("{0}:", i);
                if (result != null)
                    Console.WriteLine("'" + result + "'");
                else
                    Console.WriteLine("不是字符类型");
            }
            Console.ReadLine(); 
        }
    }
    /// <summary>
    /// 产品
    /// </summary>
    public class Product
    {
        /// <summary>
        /// 编码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
    }
    /// <summary>
    /// 订单
    /// </summary>
    public class Order
    {
        /// <summary>
        /// 单号
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 产品编码
        /// </summary>
        public string ProductCode { get; set; }
    }    
}

区别

     1、is 用于检查类型;as 用于强制转换类型。

     2、is 返回布尔值;as 返回转换后的类型或null。

小结

        以上是 is 和 as 运算符的使用与区别介绍,正确使用它们可以提高代码的可读性和类型安全性。如有不到之处,请多多包涵。

相关文章