Skip to content

Commit 93e38a9

Browse files
committed
[Select] Introduce Identity for Select extension.
1 parent 7d9ba0e commit 93e38a9

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

src/StructLinq.Benchmark/Select.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public Select()
2222
delegateRange = StructEnumerable.Range(0, Count).Select(x=> x * 2.0);
2323
convertRange = Enumerable.Range(0, Count).ToTypedEnumerable().Select(x=> x * 2.0);
2424
var multFunction = new MultFunction();
25-
structRange = StructEnumerable.Range(0, Count).Select(ref multFunction, default(double));
25+
structRange = StructEnumerable.Range(0, Count).Select(ref multFunction, Identity<double>.Instance);
2626
}
2727

2828
[Benchmark(Baseline = true)]

src/StructLinq.Tests/SelectTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Linq;
43
using Xunit;
54

@@ -33,7 +32,7 @@ public void StructTest()
3332
var fct = new MultFunction();
3433
var structEnum = StructEnumerable
3534
.Range(-50, 100)
36-
.Select(ref fct, default(double))
35+
.Select(ref fct, Identity<double>.Instance)
3736
.ToArray();
3837
Assert.Equal(sys, structEnum);
3938

src/StructLinq/Identity.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace StructLinq
2+
{
3+
public class Identity<T>
4+
{
5+
private Identity()
6+
{
7+
}
8+
public static readonly Identity<T> Instance = new Identity<T>();
9+
}
10+
}

src/StructLinq/Select/SelectStructEnumerable.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace StructLinq
88
public static partial class StructEnumerable
99
{
1010
public static ITypedEnumerable<TOut, SelectEnumerator<TIn, TOut, TEnumerator, TFunction>>
11-
Select<TIn, TOut, TEnumerator, TFunction>(this ITypedEnumerable<TIn, TEnumerator> enumerable, ref TFunction function, TOut output = default(TOut))
11+
Select<TIn, TOut, TEnumerator, TFunction>(this ITypedEnumerable<TIn, TEnumerator> enumerable, ref TFunction function, Identity<TOut> output)
1212
where TEnumerator : IEnumerator<TIn>
1313
where TFunction : struct, IFunction<TIn, TOut>
1414
{
@@ -19,7 +19,7 @@ public static ITypedEnumerable<TOut, SelectEnumerator<TIn, TOut, TEnumerator, St
1919
where TEnumerator : IEnumerator<TIn>
2020
{
2121
var fct = function.ToStruct();
22-
return enumerable.Select(ref fct, default(TOut));
22+
return enumerable.Select(ref fct, Identity<TOut>.Instance);
2323
}
2424
}
2525

0 commit comments

Comments
 (0)