Let's say I have the following method:
public static int CountNonNullMembers<T>(this IEnumerable<T> enumerable)
{
if (enumerable == null) throw new ArgumentNullException("enumerable");
int count = 0;
foreach (var x in enumerable)
{
if (x != null) count++;
}
return count;
}
And I have these 3 arrays ::
var ints = Enumerable.Range(0,10).ToArray();
var nullableInts = Array.ConvertAll(ints,x=>x as int?);
var strings = Array.ConvertAll(ints,x => x.ToString());
, . ints strings, 100 . nullableInts 2,5 .
, int , struct, . Nullable<T> , x.HasValue. , , ? EqualityComparer<T>, null T, .
, , , , structs, Nullable<T> .
. ( ); . , . , , , (, , ), .
, .Count nullableInts strings ( ), . , . UnboxT Check<T>.IfNull .
, :
public static int CountNonNullMembers<T>(this IEnumerable<T> enumerable)
{
return enumerable.Count(Check<T>.IfNull.Invoke);
}
?