Мне интересно, когда уместно использовать глобальные переменные. У меня есть пример следующим образом:
public partial class Form1 : Form
{
List<string> fileTypes = new List<string>();
private void btnManualBackup_Click(object sender, EventArgs e)
{
fileTypes.add("add stuff");
}
}
Если я создам список типов файлов в функции щелчка, он будет создавать новый список каждый раз при нажатии кнопки, но я также слышал, что использование глобальных переменных является плохой практикой. Кроме того, если глобальная переменная в этом случае уместна, лучше ли хранить ее в верхней части файла или непосредственно над функцией, которая ее использует?
Может быть интересно следующее: Переменные.
fileTypes — это поле, а не «глобальное» — согласно этим документам «Поля являются членами своего содержащего типа». Это идеальный способ хранения значений, которые существуют на протяжении всего времени существования формы. Где вы его поместите, зависит от личных предпочтений.





В вашем примере тип файла не является глобальным. Это личное. Если перед decleration нет ключевого слова, оно обычно является частным. Использование, как показано в вашем коде, в порядке. Если вы хотите создать список с первого щелчка, вы можете изменить код следующим образом:
Глобальные переменные не должны использоваться, если это возможно.
public partial class Form1 : Form
{
private List<string> fileTypes; // private for clarification
private void btnManualBackup_Click(object sender, EventArgs e)
{
if (fileTypes == null) // If fileType is not created do it
fileTypes = new new List<string>();
fileTypes.add("add stuff");
}
}
Существуют и другие решения в зависимости от вашей версии С# с оператором ? https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator
Что касается глобальной переменной, в С# они обычно статичны и находятся вне класса. https://www.arclab.com/en/kb/csharp/global-variables-fields-functions-static-class.html
В C# нет настоящих глобальных переменных. Вместо этого класс может иметь
public staticпеременные. Использовать ли переменную экземпляра или статическую переменную, зависит от вас. Мы не высказываем здесь мнения, поэтому вряд ли вы получите слишком много советов по этому поводу, но вам нужно изучитьstaticи его значение.