TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #1473 1.7K
День 1193. #ЗаметкиНаПолях #TipsAndTricks
Временно Изменяем CurrentCulture
Иногда для тестирования некоторых функций вам требуется изменить культуру потока, в котором работает приложение. Текущая культура определяется в глобальном свойстве Thread.CurrentThread.CurrentCulture.

Создадим класс, который реализует интерфейс IDisposable, чтобы иметь ограниченный блок кода, в котором будет использоваться новая культура:
public class TempCulture : IDisposable
{
CultureInfo _old;

public TempCulture(CultureInfo culture)
{
_old = CultureInfo.CurrentCulture;
Thread.CurrentThread.CurrentCulture = culture;
}

public void Dispose()
{
Thread.CurrentThread.CurrentCulture = _old;
}
}

В конструкторе сохраняем текущую культуру в приватном поле. Затем, когда мы вызываем метод Dispose (который неявно вызывается при закрытии блока using), мы используем это значение для восстановления исходной культуры.

Например, проверим символ валюты:
Thread.CurrentThread.CurrentCulture = 
new CultureInfo("ja-jp");

Console.WriteLine(
Thread.CurrentThread.CurrentCulture
.NumberFormat.CurrencySymbol
);
//¥

using (new TempCulture(new CultureInfo("ru-ru")))
{
Console.WriteLine(
Thread.CurrentThread.CurrentCulture
.NumberFormat.CurrencySymbol
);
//₽
}

Console.WriteLine(
Thread.CurrentThread.CurrentCulture
.NumberFormat.CurrencySymbol
);
//¥

Сначала мы устанавливаем культуру текущего потока на японскую, и получаем символ валюты – йену ¥. Затем временно переходим на русскую культуру и в консоль выводится рубль ₽. Наконец, когда мы выходим за пределы блока using, мы снова получаем йену.

Итого
Использование класса, реализующего IDisposable, — хороший способ создать временную среду с характеристиками, отличными от характеристик основной среды.

Источник: https://dev.to/bellonedavide/c-tip-how-to-temporarily-change-the-currentculture-2bp7
  • 👍 21
More from @netdeveloperdiary
  1. Oct 14, 2026Post #3373
  2. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  3. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  4. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  5. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
  6. Oct 9, 2026День 2809. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Окончание Начало 3.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →