gachi_muchenik Asked:2023-11-02 23:11:10 +0000 UTC2023-11-02 23:11:10 +0000 UTC 2023-11-02 23:11:10 +0000 UTC 强制转换和类型转换有什么区别? 772 不能理解 确实,不兼容类型的转换仍然可以通过强制转换来完成。类型转换本质上意味着显式转换它们。(摘自书本) 原来演员阵容就是转型? c# 1 个回答 Voted Best Answer Швеев Алексей 2023-11-02T23:59:14Z2023-11-02T23:59:14Z 类型转换 类型的值T1被修改为类型的值T2。例如,从int到 的转换float需要为值中点的位置分配位。或者,在转换int为时,string需要获取反映 中写入值的字符代码int。 投掷 具有类型的对象T1通过变量来表达T2,但对象的结构不会改变。例如,我们有T1 : T2,其中T1是子元素,T2是父元素。当我们开处方时 T2 someVariable = new T1() 我们在内存中为一个新类型分配空间T1,但该类型中的数据经过安排,以便可以以相同的方式读取该类型,而无需T2更改数据本身。 例子: 假设我们有 2 个类: class A { int aValue; } class B : A { int bValue } 那么这些对象在内存中的初始化将如下所示: var a = new A() // [..., int<aValue>, ...] var b = new B() // [..., int<aValue>, int<bValue>, ...] 此外,a这些b是指向第一个数据元素的指针 所以如果我们这样做 A b_as_a = b 那么对象的内部结构不会改变,但我们仍然可以访问第一个值int<aValue>,因为它相对于对象开头的移位对于所有子对象来说都是相同的 您可以在此处阅读有关向下转换(将子类型转换为父类型)的更多信息 PS:当然,在实践中,一切都比我现在描述的要复杂一些,但这足以理解一般概念
类型转换
类型的值
T1被修改为类型的值T2。例如,从int到 的转换float需要为值中点的位置分配位。或者,在转换int为时,string需要获取反映 中写入值的字符代码int。投掷
具有类型的对象
T1通过变量来表达T2,但对象的结构不会改变。例如,我们有T1 : T2,其中T1是子元素,T2是父元素。当我们开处方时我们在内存中为一个新类型分配空间
T1,但该类型中的数据经过安排,以便可以以相同的方式读取该类型,而无需T2更改数据本身。例子:
假设我们有 2 个类:
那么这些对象在内存中的初始化将如下所示:
此外,
a这些b是指向第一个数据元素的指针所以如果我们这样做
那么对象的内部结构不会改变,但我们仍然可以访问第一个值
int<aValue>,因为它相对于对象开头的移位对于所有子对象来说都是相同的您可以在此处阅读有关向下转换(将子类型转换为父类型)的更多信息
PS:当然,在实践中,一切都比我现在描述的要复杂一些,但这足以理解一般概念