diff --git a/src/Generator/Generators/CodeGenerator.cs b/src/Generator/Generators/CodeGenerator.cs
index bb63bd7b..58c86f09 100644
--- a/src/Generator/Generators/CodeGenerator.cs
+++ b/src/Generator/Generators/CodeGenerator.cs
@@ -191,13 +191,10 @@ namespace CppSharp.Generators
 
         public virtual void GenerateEnumItems(Enumeration @enum)
         {
-            var last = @enum.Items.Last();
-
-            foreach (var item in @enum.Items)
+            for (int i = 0; i < @enum.Items.Count; i++)
             {
-                item.Visit(this);
-
-                WriteLine(item == last ? string.Empty : ",");
+                @enum.Items[i].Visit(this);
+                WriteLine(i == @enum.Items.Count - 1 ? string.Empty : ",");
             }
         }
 
diff --git a/tests/Common/Common.h b/tests/Common/Common.h
index 3f9e53f3..a0540480 100644
--- a/tests/Common/Common.h
+++ b/tests/Common/Common.h
@@ -1216,3 +1216,5 @@ public:
 
 DLL_API void hasPointerParam(Foo* foo, int i);
 DLL_API void hasPointerParam(const Foo& foo);
+
+enum EmptyEnum { };