MSBuild15 CS0121 неоднозначный 'List < T > .List (params T [])' и 'List < T > .List (params List < T > [])'

abc123 спросил: 13 октября 2017 в 06:36 в: c#

Следующий код будет компилироваться в MSBuild12, но не будет работать в MSBuild15

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;namespace Example
{
    public class List<T> : IEnumerable<T>
    {
        private readonly T[] _items;        public List(params T[] items)
        {
            _items = items;
        }        public List(params List<T>[] args)
        {
            _items = args.SelectMany(t => t).ToArray();
        }        public static List<T> New
        {
            get { return new List<T>(); }
        }        public IEnumerator<T> GetEnumerator()
        {
            foreach (var item in _items)
                yield return item;
        }        IEnumerator IEnumerable.GetEnumerator()
        {
            return _items.GetEnumerator();
        }
    }
}

Result

CS0121 Вызов неоднозначен между следующими методами или свойства: 'List.List (params T [])' и 'List.List (params List [])' Пример D: \ Example \ Test.cs

В MSBuild 12, по умолчанию этот конструктор имеет значение.

0 ответов