[C# 2.0] Probleem implementeren IEnumerable<T>

Pagina: 1
Acties:

  • RobLemmens
  • Registratie: Juni 2003
  • Laatst online: 12-04 17:37
Ik probeer een stuk code van de msdn aan het werken te krijgen, het betreft een namespace met datastructures als bijvoorbeeld een bst. Omdat ik lui ben en een bst nodig heb dacht ik de implementatie van microsoft te kunnen gebruiken. Het probleem is dat ik het niet gecompileerd krijg. Ik krijg telkens de volgende foutmelding:

'DataStructures.BinarySearchTree<T>' does not implement interface member 'System.Collections.IEnumerable.GetEnumerator()'. 'DataStructures.BinarySearchTree<T>.GetEnumerator()' is either static, not public, or has the wrong return type. E:\Broncode\Vortex.NET\DataStructures\BinarySearchTree.cs

Waarom? de access specifiers zijn het niet want de method is gewoon public, het moet dan wel het return type zijn maar deze is toch ook correct? Zoiezo vreemd dat een sample van msdn maar niet wil compilen. Nu is dit men eerste ervaring met c# en generics en weet ik even niet hoe ik nu verder moet.

Misschien dat jullie me eruit kunnen helpen?


Het artikel met de volledige broncode is hier te vinden: http://msdn.microsoft.com...atastructures20_3.asp#top

Ik gebruik VS2005 en .NET 2.0 onder WXPSP2.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  public class BinarySearchTree<T> : ICollection<T>, IEnumerable<T>
  {

   /* code knip */ 
    
   public virtual IEnumerator<T> GetEnumerator()
   {
    return GetEnumerator(TraversalMethod.Inorder);
   }

   public virtual IEnumerator<T> GetEnumerator(TraversalMethod TraversalMethod)
   {
    switch (TraversalMethod)
    {
     case TraversalMethod.Preorder:
      return Preorder.GetEnumerator();

     case TraversalMethod.Inorder:
      return Inorder.GetEnumerator();

     case TraversalMethod.Postorder:
     default:
      return Postorder.GetEnumerator();
    }
   }

   /* code knip */ 
  };

[ Voor 4% gewijzigd door RobLemmens op 22-07-2005 14:10 ]


  • SlowMeDown
  • Registratie: Mei 2003
  • Laatst online: 12:44
Implementeer ook nog IEnumerable.GetEnumerator (dus niet IEnumerable<T>, maar IEnumerable) en jou probleem zou opgelost moeten zijn.

IEnumerable<T> is een descendant class van IEnumerable. Jij zult dus ook IEnumerable moeten implementeren in classes die afgeleid zijn van IEnumerable<T>