曾經想過, Delphi 要能這樣給數組賦值就好了: arr := [...]; VarArrayOf 可不是新東西, 不過之前還沒習慣用它.
var bs: TBytes; // bs: TArray<Byte>begin// SetLength(bs, 3); bs := VarArrayOf([11, 22, 33]); ShowMessage(IntToStr(bs[2])); //33end; var strArr: TArray<string> begin// SetLength(strArr, 3); strArr := VarArrayOf(['AAA','BBB','CCC' ]); ShowMessage(strArr[2]); //CCCend;
這只用於動態數組, 甚至支持泛型寫法, 但不支持靜態數組; 但當做函數參數時, 只支持傳統動態數組的寫法.
function GetSum(aArr: arrayof Integer): Integer; var i: Integer; begin Result := 0; for i in aArr do Inc(Result, i); end; procedure TForm1.FormCreate(Sender: TObject); var n: Integer; begin n := GetSum([1, 2, 3]); ShowMessage(IntToStr(n)); //6 n := GetSum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); ShowMessage(IntToStr(n)); //55end;
還有一個 GDI+ 中非常好的功能之前被忽視了, 現在才知道它的好: 這就是 GDI+ 中 Bitmap 的 Pixels[] 屬性, 和 Canvas.Pixels[] 不同, 它快多了!