private static int i = 0; Are you sure that `i` should be static? If it's static there isn't too much sense of the `Counter instance = new Counter()` instance and the `Next` and the `Reset` methods also could be static. Anyway, I'd use a longer variable name, like `nextValue` for better readability.