using System.Collections.Generic;
using System.Collections;
public static void Main()
PerformGuidIncrements(10);
PerformGuidIncrements(100);
PerformGuidIncrements(1000);
PerformGuidIncrements(4081);
PerformGuidIncrements(4082);
private static void PerformGuidIncrements(int by){
var guids = Enumerable.Range(0, by).Select(i => Guid.Empty.Increment(i));
Console.WriteLine($"No duplicates after {by} increments: {guids.Count() == guids.Distinct().Count()}");
public static class GuidExtensions{
public static Guid Increment(this Guid guid, int by = 1)
var guidBytes = guid.ToByteArray();
for (var i = 0; i < by; i++)
guidBytes = SingleIncrement(guidBytes);
return new Guid(guidBytes);
private static byte[] SingleIncrement(byte[] guidBytes)
for (var i = 15; i >= 0; i--)
if (byteMaxCounter < 16) return guidBytes;
var result = Enumerable.Repeat(byte.MinValue, 16).ToArray();