diff --git a/csharp/src/Google.Protobuf/Collections/MapField.cs b/csharp/src/Google.Protobuf/Collections/MapField.cs
index 392e7ea..d60ebc5 100644
--- a/csharp/src/Google.Protobuf/Collections/MapField.cs
+++ b/csharp/src/Google.Protobuf/Collections/MapField.cs
@@ -474,15 +474,6 @@
             {
                 ctx.CopyStateTo(output);
             }
-
-            //var message = new Codec.MessageAdapter(codec);
-            //foreach (var entry in list)
-            //{
-            //    message.Key = entry.Key;
-            //    message.Value = entry.Value;
-            //    output.WriteTag(codec.MapTag);
-            //    output.WriteMessage(message);
-            //}
         }
 
         /// <summary>
diff --git a/csharp/src/Google.Protobuf/Collections/RepeatedField.cs b/csharp/src/Google.Protobuf/Collections/RepeatedField.cs
index c50137b..1ce5163 100644
--- a/csharp/src/Google.Protobuf/Collections/RepeatedField.cs
+++ b/csharp/src/Google.Protobuf/Collections/RepeatedField.cs
@@ -216,38 +216,6 @@
             {
                 ctx.CopyStateTo(output);
             }
-
-            //if (count == 0)
-            //{
-            //    return;
-            //}
-            //var writer = codec.ValueWriter;
-            //var tag = codec.Tag;
-            //if (codec.PackedRepeatedField)
-            //{
-            //    // Packed primitive type
-            //    int size = CalculatePackedDataSize(codec);
-            //    output.WriteTag(tag);
-            //    output.WriteLength(size);
-            //    for (int i = 0; i < count; i++)
-            //    {
-            //        writer(output, array[i]);
-            //    }
-            //}
-            //else
-            //{
-            //    // Not packed: a simple tag/value pair for each value.
-            //    // Can't use codec.WriteTagAndValue, as that omits default values.
-            //    for (int i = 0; i < count; i++)
-            //    {
-            //        output.WriteTag(tag);
-            //        writer(output, array[i]);
-            //        if (codec.EndTag != 0)
-            //        {
-            //            output.WriteTag(codec.EndTag);
-            //        }
-            //    }
-            //}
         }
 
         /// <summary>
diff --git a/csharp/src/Google.Protobuf/ExtensionSet.cs b/csharp/src/Google.Protobuf/ExtensionSet.cs
index 7eb309c..895b9ae 100644
--- a/csharp/src/Google.Protobuf/ExtensionSet.cs
+++ b/csharp/src/Google.Protobuf/ExtensionSet.cs
@@ -355,11 +355,6 @@
             {
                 ctx.CopyStateTo(stream);
             }
-
-            // foreach (var value in ValuesByNumber.Values)
-            // {
-            //     value.WriteTo(stream);
-            // }
         }
 
         /// <summary>
diff --git a/csharp/src/Google.Protobuf/ExtensionValue.cs b/csharp/src/Google.Protobuf/ExtensionValue.cs
index aea7ad6..ada5d79 100644
--- a/csharp/src/Google.Protobuf/ExtensionValue.cs
+++ b/csharp/src/Google.Protobuf/ExtensionValue.cs
@@ -181,11 +181,6 @@
             }
         }
 
-        //public void MergeFrom(CodedInputStream input)
-        //{
-        //    field.AddEntriesFrom(input, codec);
-        //}
-
         public void MergeFrom(ref ParseContext ctx)
         {
             field.AddEntriesFrom(ref ctx, codec);
diff --git a/csharp/src/Google.Protobuf/UnknownFieldSet.cs b/csharp/src/Google.Protobuf/UnknownFieldSet.cs
index 1ea88c2..9888dd1 100644
--- a/csharp/src/Google.Protobuf/UnknownFieldSet.cs
+++ b/csharp/src/Google.Protobuf/UnknownFieldSet.cs
@@ -81,11 +81,6 @@
             {
                 ctx.CopyStateTo(output);
             }
-
-            //foreach (KeyValuePair<int, UnknownField> entry in fields)
-            //{
-            //    entry.Value.WriteTo(entry.Key, output);
-            //}
         }
 
         /// <summary>
