我有一个由 int?
提供的连接字符串的方法。
public string ConcatenateNumber(IEnumerable<int?> myList)
{
return myList
.Distinct()
.Aggregate(
new StringBuilder(),
(current, next) => current.Append("'").Append(next))
.ToString()
.Substring(1);
}
现在我想做单元测试。
[TestMethod]
public void InputIntegers_Should_Be_Concatenated_When_Consider_Distinct()
{
var myList = CreateEnumerable(1, 2, 2, 3);
var logic = new MainLogic();
var result = logic.ConcatenateNumber(myList);
Assert.AreEqual("1'2'3", result);
}
public IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
if (items == null)
yield break;
foreach (T mitem in items)
yield return mitem;
}
但是我有编译错误。
C#: Unknown method ConcatenateNumber(System.Collections.Generic.IEnumerable) of ....
我认为这是由可空整数int?
引起的。但我不知道如何解决它。
最佳答案
将类型显式传递为可为 null 的 int。
var myList = CreateEnumerable<int?>(1, 2, 2, 3);
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var p = new Program();
var list = p.CreateEnumerable<int?>(1, 2, 3, 4);
p.DoWork(list);
}
public void DoWork(IEnumerable<int?> enumerable)
{
enumerable.ToList().ForEach(x =>
{
Console.WriteLine(x);
});
}
public IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
if (items == null)
yield break;
foreach (T mitem in items)
yield return mitem;
}
}
关于c# - 无法处理泛型中的 IEnumerable<int?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42255611/