Если ваш файл .cs не содержит символов, выходящих за пределы обычного диапазона ASCII, вы не увидите разницы в реальном содержимом файла. Разница в том, пытается ли редактор определить кодировку символов, с которой вы сохранили ваш файл, когда вы открываете его снова, или спрашивает вас конкретно.
По умолчанию, когда вы сохраняете новый файл .cs, VS использует текущую кодовую страницу ANSI для кодирования символов. (Вы можете переключить это, чтобы использовать UTF-8 по умолчанию с соответствующими параметрами.) Однако вместо этого вы можете выбрать «Сохранить с кодировкой ...», которая предложит вам конкретную кодировку символов, которую вы хотите сохранить.
Внутренне, ваш код обрабатывается как UTF-16, так как это то, с чем Windows имеет дело, поскольку это собственный формат строки. На диске, однако, UTF-16, скорее всего, взорвет ваши исходные файлы, чтобы удвоить их размер, так как большая часть написанного вами кода C #, вероятно, помещается в один байт. Таким образом, при записи на диск VS записывает ваши данные в определенной кодовой странице, которая определяет, как преобразовать символы UTF-16 в некоторый другой, возможно, 8-битный набор символов.
Когда вы перезагружаете файл в VS, он пытается выяснить, в какой кодировке находился этот файл, и, если это невозможно, он возвращается к текущей кодовой странице ANSI. (Вы можете заставить его вернуться к UTF-8 с помощью некоторых опций, но он никогда не переключится на другую кодировку.)
Когда вы перезагружаете файл «С кодировкой», вы получаете то же приглашение, что и при сохранении файла, спрашивая, какая кодировка использовалась. Таким образом, если Studio ошибется, вы можете это исправить.
Если вы не занимаетесь большим количеством интернационализированного программирования, где у вас есть строки на иностранных языках, встроенные в ваш файл .cs с языка, отличного от языка по умолчанию, вам, вероятно, не нужно использовать явное сохранение или загрузку с кодировкой , Но они есть, если они вам нужны.