@@ -62,13 +62,13 @@ TEnumerableBase<T> = class abstract(TEnumerableBase)
6262 function Equals (const left, right: T): Boolean; reintroduce; inline;
6363 function QueryInterface (const IID: TGUID; out obj): HResult; stdcall;
6464 procedure CopyTo (var values: TArray<T>; index: Integer);
65- function TryGetElementAt (out value : T; index: Integer): Boolean;
66- function TryGetFirst (out value : T): Boolean; overload;
67- function TryGetFirst (out value : T; const predicate: Predicate<T>): Boolean; overload;
68- function TryGetLast (out value : T): Boolean; overload;
69- function TryGetLast (out value : T; const predicate: Predicate<T>): Boolean; overload;
70- function TryGetSingle (out value : T): Boolean; overload;
71- function TryGetSingle (out value : T; const predicate: Predicate<T>): Boolean; overload;
65+ function TryGetElementAt (var value : T; index: Integer): Boolean;
66+ function TryGetFirst (var value : T): Boolean; overload;
67+ function TryGetFirst (var value : T; const predicate: Predicate<T>): Boolean; overload;
68+ function TryGetLast (var value : T): Boolean; overload;
69+ function TryGetLast (var value : T; const predicate: Predicate<T>): Boolean; overload;
70+ function TryGetSingle (var value : T): Boolean; overload;
71+ function TryGetSingle (var value : T; const predicate: Predicate<T>): Boolean; overload;
7272 function UseComparer (typeKind: TTypeKind): Boolean; inline;
7373 property Comparer: IComparer<T> read fComparer;
7474 public
@@ -457,7 +457,7 @@ TEnumerator = class(TRefCountedObject, IEnumerator<T>)
457457 function Contains (const value : T): Boolean; overload;
458458 function GetEnumerator : IEnumerator<T>;
459459 function ToArray : TArray<T>;
460- function TryGetElementAt (out value : T; index: Integer): Boolean;
460+ function TryGetElementAt (var value : T; index: Integer): Boolean;
461461 { $ENDREGION}
462462 end ;
463463
@@ -539,8 +539,8 @@ TEnumerator = class(TRefCountedObject, IEnumerator<T>)
539539 function FirstOrDefault : T; overload;
540540 function Single : T; overload;
541541 function SingleOrDefault (const defaultValue: T): T; overload;
542- function TryGetFirst (out value : T): Boolean; overload;
543- function TryGetLast (out value : T): Boolean; overload;
542+ function TryGetFirst (var value : T): Boolean; overload;
543+ function TryGetLast (var value : T): Boolean; overload;
544544 { $ENDREGION}
545545
546546 procedure Clear ;
@@ -969,8 +969,7 @@ function TEnumerableBase<T>.ElementAt(index: Integer): T;
969969
970970function TEnumerableBase <T>.ElementAtOrDefault(index: Integer): T;
971971begin
972- if not IEnumerable<T>(this).TryGetElementAt(Result, index) then
973- Result := Default(T);
972+ IEnumerable<T>(this).TryGetElementAt(Result, index);
974973end ;
975974
976975function TEnumerableBase <T>.ElementAtOrDefault(index: Integer;
@@ -1064,11 +1063,8 @@ function TEnumerableBase<T>.First(const predicate: Predicate<T>): T;
10641063end ;
10651064
10661065function TEnumerableBase <T>.FirstOrDefault: T;
1067- var
1068- defaultItem: T;
10691066begin
1070- if not IEnumerable<T>(this).TryGetFirst(Result) then
1071- Result := Default(T);
1067+ IEnumerable<T>(this).TryGetFirst(Result);
10721068end ;
10731069
10741070function TEnumerableBase <T>.FirstOrDefault(const defaultValue: T): T;
@@ -1079,8 +1075,7 @@ function TEnumerableBase<T>.FirstOrDefault(const defaultValue: T): T;
10791075
10801076function TEnumerableBase <T>.FirstOrDefault(const predicate: Predicate<T>): T;
10811077begin
1082- if not IEnumerable<T>(this).TryGetFirst(Result, predicate) then
1083- Result := Default(T);
1078+ IEnumerable<T>(this).TryGetFirst(Result, predicate);
10841079end ;
10851080
10861081function TEnumerableBase <T>.FirstOrDefault(const predicate: Predicate<T>;
@@ -1126,8 +1121,7 @@ function TEnumerableBase<T>.Last(const predicate: Predicate<T>): T;
11261121
11271122function TEnumerableBase <T>.LastOrDefault: T;
11281123begin
1129- if not IEnumerable<T>(this).TryGetLast(Result) then
1130- Result := Default(T);
1124+ IEnumerable<T>(this).TryGetLast(Result);
11311125end ;
11321126
11331127function TEnumerableBase <T>.LastOrDefault(const defaultValue: T): T;
@@ -1138,8 +1132,7 @@ function TEnumerableBase<T>.LastOrDefault(const defaultValue: T): T;
11381132
11391133function TEnumerableBase <T>.LastOrDefault(const predicate: Predicate<T>): T;
11401134begin
1141- if not IEnumerable<T>(this).TryGetLast(Result, predicate) then
1142- Result := Default(T);
1135+ IEnumerable<T>(this).TryGetLast(Result, predicate);
11431136end ;
11441137
11451138function TEnumerableBase <T>.LastOrDefault(const predicate: Predicate<T>;
@@ -1486,8 +1479,7 @@ function TEnumerableBase<T>.ToArray: TArray<T>;
14861479 end ;
14871480end ;
14881481
1489- function TEnumerableBase <T>.TryGetElementAt(out value : T;
1490- index: Integer): Boolean;
1482+ function TEnumerableBase <T>.TryGetElementAt(var value : T; index: Integer): Boolean;
14911483var
14921484 enumerator: IEnumerator<T>;
14931485begin
@@ -1506,7 +1498,7 @@ function TEnumerableBase<T>.TryGetElementAt(out value: T;
15061498 Result := False;
15071499end ;
15081500
1509- function TEnumerableBase <T>.TryGetFirst(out value : T): Boolean;
1501+ function TEnumerableBase <T>.TryGetFirst(var value : T): Boolean;
15101502var
15111503 enumerator: IEnumerator<T>;
15121504begin
@@ -1520,7 +1512,7 @@ function TEnumerableBase<T>.TryGetFirst(out value: T): Boolean;
15201512 Result := False;
15211513end ;
15221514
1523- function TEnumerableBase <T>.TryGetFirst(out value : T; const predicate: Predicate<T>): Boolean;
1515+ function TEnumerableBase <T>.TryGetFirst(var value : T; const predicate: Predicate<T>): Boolean;
15241516var
15251517 item: T;
15261518begin
@@ -1538,7 +1530,7 @@ function TEnumerableBase<T>.TryGetFirst(out value: T; const predicate: Predicate
15381530 Result := False;
15391531end ;
15401532
1541- function TEnumerableBase <T>.TryGetLast(out value : T): Boolean;
1533+ function TEnumerableBase <T>.TryGetLast(var value : T): Boolean;
15421534var
15431535 enumerator: IEnumerator<T>;
15441536begin
@@ -1554,7 +1546,7 @@ function TEnumerableBase<T>.TryGetLast(out value: T): Boolean;
15541546 Result := False;
15551547end ;
15561548
1557- function TEnumerableBase <T>.TryGetLast(out value : T; const predicate: Predicate<T>): Boolean;
1549+ function TEnumerableBase <T>.TryGetLast(var value : T; const predicate: Predicate<T>): Boolean;
15581550var
15591551 item: T;
15601552begin
@@ -1575,7 +1567,7 @@ function TEnumerableBase<T>.TryGetLast(out value: T; const predicate: Predicate<
15751567 value := Default(T);
15761568end ;
15771569
1578- function TEnumerableBase <T>.TryGetSingle(out value : T): Boolean;
1570+ function TEnumerableBase <T>.TryGetSingle(var value : T): Boolean;
15791571var
15801572 enumerator: IEnumerator<T>;
15811573 item: T;
@@ -1594,7 +1586,7 @@ function TEnumerableBase<T>.TryGetSingle(out value: T): Boolean;
15941586 Result := False;
15951587end ;
15961588
1597- function TEnumerableBase <T>.TryGetSingle(out value : T;
1589+ function TEnumerableBase <T>.TryGetSingle(var value : T;
15981590 const predicate: Predicate<T>): Boolean;
15991591var
16001592 item: T;
@@ -2082,8 +2074,7 @@ function TInnerCollection<T>.ToArray: TArray<T>;
20822074 end ;
20832075end ;
20842076
2085- function TInnerCollection <T>.TryGetElementAt(out value : T;
2086- index: Integer): Boolean;
2077+ function TInnerCollection <T>.TryGetElementAt(var value : T; index: Integer): Boolean;
20872078begin
20882079 Result := Cardinal(index) < Cardinal(fHashTable.Count);
20892080 if Result then
@@ -2410,7 +2401,7 @@ procedure TCircularArrayBuffer<T>.TrimExcess;
24102401 SetCapacity(Count);
24112402end ;
24122403
2413- function TCircularArrayBuffer <T>.TryGetFirst(out value : T): Boolean;
2404+ function TCircularArrayBuffer <T>.TryGetFirst(var value : T): Boolean;
24142405begin
24152406 Result := Count > 0 ;
24162407 if Result then
@@ -2419,7 +2410,7 @@ function TCircularArrayBuffer<T>.TryGetFirst(out value: T): Boolean;
24192410 value := Default(T);
24202411end ;
24212412
2422- function TCircularArrayBuffer <T>.TryGetLast(out value : T): Boolean;
2413+ function TCircularArrayBuffer <T>.TryGetLast(var value : T): Boolean;
24232414begin
24242415 Result := Count > 0 ;
24252416 if Result then
0 commit comments