作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Chr 和 Char 在转换类型时的区别在于,一个是函数,一个是强制类型转换
所以:Char(66) = Chr(66)
我认为没有任何性能差异(至少我从未注意到任何差异,一个可能会调用另一个)....我相当确定有人会纠正我这一点!
编辑感谢 Ulrich 的测试证明它们实际上是相同的。
编辑2任何人都可以想到它们可能不相同的情况,例如由于上下文,您被迫使用其中一种而不是另一种?
您在代码中使用哪个以及为什么?
最佳答案
我在D2007做了一个小测试:
program CharChr;
{$APPTYPE CONSOLE}
uses
Windows;
function GetSomeByte: Byte;
begin
Result := Random(26) + 65;
end;
procedure DoTests;
var
b: Byte;
c: Char;
begin
b := GetSomeByte;
IsCharAlpha(Chr(b));
b := GetSomeByte;
IsCharAlpha(Char(b));
b := GetSomeByte;
c := Chr(b);
b := GetSomeByte;
c := Char(b);
end;
begin
Randomize;
DoTests;
end.
两个调用都会产生相同的汇编代码:
CharChr.dpr.19: IsCharAlpha(Chr(b));
00403AE0 8A45FF mov al,[ebp-$01]
00403AE3 50 push eax
00403AE4 E86FFFFFFF call IsCharAlpha
CharChr.dpr.21: IsCharAlpha(Char(b));
00403AF1 8A45FF mov al,[ebp-$01]
00403AF4 50 push eax
00403AF5 E85EFFFFFF call IsCharAlpha
CharChr.dpr.24: c := Chr(b);
00403B02 8A45FF mov al,[ebp-$01]
00403B05 8845FE mov [ebp-$02],al
CharChr.dpr.26: c := Char(b);
00403B10 8A45FF mov al,[ebp-$01]
00403B13 8845FE mov [ebp-$02],al
编辑:修改示例以减轻尼克的担忧。
编辑2:尼克的愿望就是我的命令。 ;-)
关于delphi - 德尔福中的 Char 和 Chr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476488/
我是一名优秀的程序员,十分优秀!