Adding null-conditional operator on IEnumerable.GetEnumerator() (#16947)
This commit is contained in:
parent
9063e4a38b
commit
5b1b8bcb8b
|
|
@ -101,7 +101,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
EmptyDictionary.Collection.CopyTo(array, arrayIndex);
|
||||
}
|
||||
|
||||
_items.CopyTo(array, arrayIndex);
|
||||
_items?.CopyTo(array, arrayIndex);
|
||||
}
|
||||
|
||||
int ICollection<KeyValuePair<object, object>>.Count => _items?.Count ?? 0;
|
||||
|
|
@ -133,7 +133,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
IEnumerator<KeyValuePair<object, object>> IEnumerable<KeyValuePair<object, object>>.GetEnumerator()
|
||||
=> _items?.GetEnumerator() ?? EmptyEnumerator.Instance;
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() => _items.GetEnumerator() ?? EmptyEnumerator.Instance;
|
||||
IEnumerator IEnumerable.GetEnumerator() => _items?.GetEnumerator() ?? EmptyEnumerator.Instance;
|
||||
|
||||
private class EmptyEnumerator : IEnumerator<KeyValuePair<object, object>>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.IO.Pipelines;
|
||||
using Microsoft.AspNetCore.Http.Features;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Http
|
||||
{
|
||||
public class ItemsDictionaryTests
|
||||
{
|
||||
[Fact]
|
||||
public void GetEnumerator_ShouldResolveWithoutNullReferenceException()
|
||||
{
|
||||
// Arrange
|
||||
var dict = new ItemsDictionary();
|
||||
|
||||
// Act and Assert
|
||||
IEnumerable en = (IEnumerable) dict;
|
||||
Assert.NotNull(en.GetEnumerator());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyTo_ShouldCopyItemsWithoutNullReferenceException() {
|
||||
// Arrange
|
||||
var dict = new ItemsDictionary();
|
||||
var pairs = new KeyValuePair<object, object>[] { new KeyValuePair<object, object>("first", "value") };
|
||||
|
||||
// Act and Assert
|
||||
ICollection<KeyValuePair<object, object>> cl = (ICollection<KeyValuePair<object, object>>) dict;
|
||||
cl.CopyTo(pairs, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue