Связанный: Как создать статическую локальную переменную в Java?
Простите, если это дубликат; Я был уверен, что это было бы задано ранее, и я выглядел, но не нашел обмана.
Возможно ли создать статическую локальную переменную в С#? Если да, то как?
У меня есть статический частный метод, который используется редко. статический метод использует регулярное выражение, которое я хотел бы инициализировать один раз и только тогда, когда это необходимо.
В C я мог бы сделать это с помощью локальной статической переменной. Могу ли я сделать это на С#?
Когда я пытаюсь скомпилировать этот код:
private static string AppendCopyToFileName(string f)
{
static System.Text.RegularExpressions.Regex re =
new System.Text.RegularExpressions.Regex("\\(copy (\\d+)\\)$");
}
... это дает мне ошибку:
error CS0106: Модификатор 'static' недействителен для этого элемента
Если нет локальной статической переменной, я полагаю, что я мог бы приблизиться к тому, что мне нужно, создав крошечный новый закрытый статический класс и вставив в класс как метод, так и переменную (поле). Вот так:
public class MyClass
{
...
private static class Helper
{
private static readonly System.Text.RegularExpressions.Regex re =
new System.Text.RegularExpressions.Regex("\\(copy (\\d+)\\)$");
internal static string AppendCopyToFileName(string f)
{
// use re here...
}
}
// example of using the helper
private static void Foo()
{
if (File.Exists(name))
{
// helper gets JIT'd first time through this code
string newName = Helper.AppendCopyToFileName(name);
}
}
...
}
Размышляя об этом больше, используя класс-помощник, подобный этому, вы получите большую чистую экономию в эффективности, потому что класс Helper не будет JIT'd или загружен, если это необходимо. Правильно?