优秀的编程知识分享平台

网站首页 > 技术文章 正文

C#之类型转换(c#类型转换有哪几种)

nanyue 2025-04-30 18:37:50 技术文章 2 ℃

将一个对象转换为它的基类型

    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Student();
            Console.WriteLine(p.GetType()); // Student

            // 不过也是多余的转换
            Person p2 = (Person)new Student();
            Console.WriteLine(p2.GetType());    // Student
          
            Console.ReadKey();
        }
    }

    public class Person
    {
        public int Age { get; set; }
    }

    public class Student : Person
    {
        public int StuNum { get; set; }
    }

但是当我们访问p/p2的成员时,他只有一个Age成员,没有StuNum。

将一个对象转换为它的派生类型

这种情况必须显示转换,因为这种转换可能会在运行时失败

Student stu = new Person();	// 不能通过编译
Student stu = (Student)new Person(); // 不能把父类类型转换成子类对象

【里氏转换】

1)、子类可以赋值给父类(需要一个父类类型时,给一个子类类型的对象是可以的)

2)、如果父类中装的是子类对象,那么可以将这个父类强转为这个子类对象。

3)、不能把父类类型转换成子类对象

Person p3 = new Student();
Student stu2 = (Student)p3;
Console.WriteLine(stu2.GetType());

基元类型的类型转换

逻辑上有从属关系C#可以完成转换。例如int可以隐式转换为long,较大集合转换为较小集合时C#要求显示转换,例如long转换为int。

最近发表
标签列表