2011-07-29 14 views
-3

私のコードは次のとおりです。IEnumerableを実装しています。エラー。

using System; 
using System.Threading; 
using System.Collections; 
using System.Collections.Generic; 

namespace IEnumerable 
{ 
    public class MyEnumerable<T> : IEnumerable<T> 
    { 
     public MyEnumerable(T[] items) 
     { 
      this.items = items; 
     } 

     public IEnumerator<T> GetEnumerator() 
     { 
      return new NestedEnumerator(this); 
     } 

     IEnumerator IEnumerable.GetEnumerator() 
     { 
      return GetEnumerator(); 
     } 

     // The enumerator definition. 
     class NestedEnumerator : IEnumerator<T> 
     { 
      public NestedEnumerator(MyEnumerable<T> coll) 
      { 
       Monitor.Enter(coll.items.SyncRoot); 
       this.index = -1; 
       this.coll = coll; 
      } 

      public T Current 
      { 
       get { return current; } 
      } 

      object IEnumerator.Current 
      { 
       get { return Current; } 
      } 

      public bool MoveNext() 
      { 
       if (++index >= coll.items.Length) 
       { 
        return false; 
       } 
       else 
       { 
        current = coll.items[index]; 
        return true; 
       } 
      } 

      public void Reset() 
      { 
       current = default(T); 
       index = 0; 
      } 

      public void Dispose() 
      { 
       try 
       { 
        current = default(T); 
        index = coll.items.Length; 
       } 
       finally 
       { 
        Monitor.Exit(coll.items.SyncRoot); 
       } 
      } 

      private MyEnumerable<T> coll; 
      private T current; 
      private int index; 
     } 

     private T[] items; 
    } 

    public class EntryPoint 
    { 
     static void Main() 
     { 
      MyEnumerable<int> integers = new MyEnumerable<int>(new int[] { 1, 2, 3, 4 }); 

      foreach (int n in integers) 
      { 
       Console.WriteLine(n); 
      } 
     } 
    } 
} 

私は、コードのこの部分を実装していますが、私はエラーを取得します。誰でも私に何をしてこのコードを無料でエラーするのを助けることができますか?助けてください。 私のエラーは、次のとおりです。

1 - > 'IEnumerableを' が '名前空間' ですが、 'タイプ'

2のように使用される - > 'IEnumerable.MyEnumerable' インターフェイスメンバを実装していません「にSystem.Collections。 IEnumerable.GetEnumerator() ' 'IEnumerable.MyEnumerable.GetEnumerator()'は 'System.Collections.IEnumerator'の一致する戻り値の型がないため、 'System.Collections.IEnumerable.GetEnumerator()'を実装できません。

+7

エラーが発生しましたか? (誰かが興味がある場合は、上記のコードのIDEoneをご覧ください:http://www.ideone.com/RHu4V) –

+0

さあ、エラーの内容をお知らせください。私たちは就職の面接に出席するのではなく、助けに来ています! –

+1

エラー:「IEnumerable」は「名前空間」ですが、「タイプ」のように使用されます –

答えて

7

すでにシステム内の型である場合、エラーはIEnumerableを名前空間として使用している可能性があります。

これは、IEnumerableへの参照が、現在使用しているIEnumerableSystem.Collections.IEnumerable)の名​​前空間ではなく、現在の名前空間を参照していることを示します。

名前空間を別のものに変更してみてください。

+0

+1名前空間にキーワードを使用しないでください – Henry

3

ここで起こっていただきました

... 
using System.Collections.Generic; 

namespace BlingBlingWoo 
{ 
    public class MyEnumerable<T> : IEnumerable<T> 
    ... 

コンパイラはあなたにを語っているものを聞いて、(BlingBlingWooなど)賢明な何かにあなたの名前空間を変更するには、次のとおりです。

Error : 'IEnumerable' is a 'namespace' but is used like a 'type'

あなたが使用しようとしていますIEnumerableと入力しますが、IEnumerableという名前空間が作成されているため、コンパイラのものはその名前空間になります。

関連する問題