Это в движке Unity Game, хотя я не уверен, что это C# вещь или только Unity.C# Невозможно изменить статические поля в статическом родовом классе
//This is fine, I can assign variables to these static fields as you would expect
public static class Test
{
public static List list = new List();
public static int d = 0;
}
//Field in this class are always default, even after assigning values in another class
public static class Test<T>
{
public static List<T> list = new List<T>();
public static int d = 0;
}
public class TestClass2: MonoBehaviour
{
private void TestMethod()
{
Test<int>.d = 3;
Test<string>.list.Add("Hi");
//Both are still null, even after declaring and assigning
}
}
Может кто-нибудь объяснить мне, почему Test<int>.d
все еще 0
и List
является недействительным после присвоения значения?
Вам необходимо назначить это в статическом конструкторе. –
Если 'list' были' null', вы получите 'NullReferenceException', когда вы вызываете' Add'. –
«int» не может быть нулевым, поэтому ваш вопрос основан на ложных предположениях. –