Types 你和我有什么区别!string()和cast(string)

Types 你和我有什么区别!string()和cast(string),types,casting,d,Types,Casting,D,在D中,以下各项之间的区别是什么: import std.conv; import std.stdio; void main() { writeln(to!int(5.0)); } 及 to!T处理的转换范围比cast大得多 例如,inti=5;writeln(cast(string)i)是一个错误--从int到string没有有效的强制转换。但inti=5;writeln(i.to!字符串)工作并打印5 一般来说,强制转换只是用不同的类型重新解释相同的字节,只有少数例外:在整数和浮

在D中,以下各项之间的区别是什么:

import std.conv;
import std.stdio;

void main() {
    writeln(to!int(5.0));
}


to!T
处理的转换范围比cast大得多

例如,
inti=5;writeln(cast(string)i)是一个错误--从int到string没有有效的强制转换。但
inti=5;writeln(i.to!字符串)工作并打印
5

一般来说,强制转换只是用不同的类型重新解释相同的字节,只有少数例外:在整数和浮点类型(int)之间强制转换→ float产生等价物;float→ int截断),在类类型之间进行强制转换(使用运行时类型信息确保强制转换有效;否则将产生null),从类强制转换到接口(这会给您一个指向适当转发函数的伪对象的指针,这很奇怪)

to
尝试进行更多的逻辑转换,最常见的是与字符串之间的转换

import std.stdio;

void main() {
    writeln(cast(int) 5.0);
}