c# - 无法处理泛型中的 IEnumerable<int?>

标签 c# .net generics nullable

我有一个由 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);

For example :

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/

相关文章:

generics - 电源外壳 。使用 'Add-Type'定义的类声明通用列表

java - `Box<Cat>` 是 `Box<? extends Animal>` 的子类型吗?

c# - 我的程序太长了。我想用循环方法缩短它

.net - 在 vb.net 中创建并写入文本文件

c# - 如何通过调用构造函数提供只读属性的值?

c# - Web API Get 方法参数中的多个 NULL 值

C# 将 FILE STREAM 传递给 EXE 文件

java - 在 Java 中使用自引用泛型类型

c# - 不能将 2 个后代加入其 parent 的同一集合下

c# - 计算包含 Unicode 字符的字符串的长度