相关疑难解决方法(0)

C#中的数组如何部分实现IList <T>?

您可能知道,C#中的数组实现IList<T>了其他接口.但不知何故,他们这样做没有公开实现Count属性IList<T>!数组只有一个Length属性.

这是一个明显的例子,C#/ .NET打破了自己关于接口实现的规则,还是我错过了什么?

.net c# arrays interface list

98
推荐指数
4
解决办法
1万
查看次数

为什么foreach(array2D中的var i)在多维数组上工作?

给出以下C#代码:

   int[,] array2D = new int[10, 10];
   int sum = 0;

   foreach (var i in array2D)
   {
        sum += i;
   }
Run Code Online (Sandbox Code Playgroud)

问题是:是什么导致类型i被正确推断为int

这并不是一件容易的事,因为array2D是一个矩形阵列.它没有实现IEnumerable<int>.它还实现了一个GetEnumerator()返回a 的方法System.Collections.IEnumerator.因此,我希望这种i类型object.

我的代码使用的是.net 4.03.

相关问题:为什么C#多维数组没有实现IEnumerable?.

.net c# foreach multidimensional-array

10
推荐指数
1
解决办法
256
查看次数

什么样的课程会产生回报

所以我注意到这段代码有效:

class Program
{
    public static void Main()
    {
        Int32[ ]numbers = {1,2,3,4,5};

        using (var enumerator = Data().GetEnumerator())
        {

        }
    }

    public static IEnumerable<String> Data()
    {
        yield return "Something";
    }
}
Run Code Online (Sandbox Code Playgroud)

特别是,我对using块感到好奇,因为:

Int32[] numbers = { 1, 2, 3, 4, 5, 6 };

using (var enumerator = numbers.GetEnumerator())
{

}
Run Code Online (Sandbox Code Playgroud)

因编译器错误而失败.显然,yield return返回的类是IDisposable常规数组枚举器不是.所以现在我很好奇:yield return创造了什么?

c#

9
推荐指数
1
解决办法
535
查看次数

标签 统计

c# ×3

.net ×2

arrays ×1

foreach ×1

interface ×1

list ×1

multidimensional-array ×1