aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs6
-rw-r--r--csharp/src/ProtocolBuffers/Collections/RepeatedField.cs63
2 files changed, 6 insertions, 63 deletions
diff --git a/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs b/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs
index 6eff8683..25be7731 100644
--- a/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs
@@ -241,18 +241,12 @@ namespace Google.Protobuf.Collections
var list = new RepeatedField<string> { "first", "second" };
using (var enumerator = list.GetEnumerator())
{
- Assert.Throws<InvalidOperationException>(() => enumerator.Current.GetHashCode());
Assert.IsTrue(enumerator.MoveNext());
Assert.AreEqual("first", enumerator.Current);
Assert.IsTrue(enumerator.MoveNext());
Assert.AreEqual("second", enumerator.Current);
Assert.IsFalse(enumerator.MoveNext());
- Assert.Throws<InvalidOperationException>(() => enumerator.Current.GetHashCode());
Assert.IsFalse(enumerator.MoveNext());
- enumerator.Reset();
- Assert.Throws<InvalidOperationException>(() => enumerator.Current.GetHashCode());
- Assert.IsTrue(enumerator.MoveNext());
- Assert.AreEqual("first", enumerator.Current);
}
}
diff --git a/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs b/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs
index a09c7954..8375ae0b 100644
--- a/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs
+++ b/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs
@@ -288,14 +288,12 @@ namespace Google.Protobuf.Collections
}
}
- public RepeatedField<T>.Enumerator GetEnumerator()
+ public IEnumerator<T> GetEnumerator()
{
- return new Enumerator(this);
- }
-
- IEnumerator<T> IEnumerable<T>.GetEnumerator()
- {
- return GetEnumerator();
+ for (int i = 0; i < count; i++)
+ {
+ yield return array[i];
+ }
}
public override bool Equals(object obj)
@@ -467,55 +465,6 @@ namespace Google.Protobuf.Collections
}
Remove((T)value);
}
- #endregion
-
- public struct Enumerator : IEnumerator<T>
- {
- private int index;
- private readonly RepeatedField<T> field;
-
- public Enumerator(RepeatedField<T> field)
- {
- this.field = field;
- this.index = -1;
- }
-
- public bool MoveNext()
- {
- if (index + 1 >= field.Count)
- {
- index = field.Count;
- return false;
- }
- index++;
- return true;
- }
-
- public void Reset()
- {
- index = -1;
- }
-
- public T Current
- {
- get
- {
- if (index == -1 || index >= field.count)
- {
- throw new InvalidOperationException();
- }
- return field.array[index];
- }
- }
-
- object IEnumerator.Current
- {
- get { return Current; }
- }
-
- public void Dispose()
- {
- }
- }
+ #endregion
}
}