Доступ к статическим членам статических членов
Рассмотрим следующие классы
class A
{
public static int i;
}
class B
{
public static A a{get;}=new A(); // without new A(), B.A will be null
}
сейчас,
Ba дает новый экземпляр A, и поскольку переменная "i" класса A является статической, я не могу получить доступ к "i" через Ba, т.е. Bai - ошибка времени компиляции.
Я понимаю, что если я делаю, как показано ниже,
class B
{
static class A
{
static int i;
}
}
тогда я мог бы сделать BAi
Итак, мой вопрос: как я могу получить доступ к статическим членам статического члена класса? Возможно ли это вообще, и есть ли другой шаблон, который я могу использовать.
Также обратите внимание на то, что класс "A" сделан статическим, а класс "B" -
class B
{
public static A a{get;}
}
выдает ошибку времени компиляции, что "статический тип не может быть использован в качестве возвращаемого типа".
3 ответа
Поскольку i
является статическим членом A
вы можете получить к нему доступ напрямую, как
class B
{
public static A a {get;} = new A();
public int ii{get;} = A.i;
}
Вам не нужно создавать экземпляр класса для доступа к его статическим членам. Просто вы можете попробовать:
int value = A.i;
Если вам нужно, вы также можете добавить статический класс:
public static class A
{
public static int i;
}
и вы можете использовать в любом месте вашего кода, как:
int value = A.i;
как я могу получить доступ к статическим членам статического члена класса?
Если что-то является членом класса - статическое или не статическое - это означает, что это либо значение, либо ссылка на экземпляр чего-либо. Следовательно, если вы знаете, что у вас есть экземпляр класса, но этот класс сам имеет статические члены, просто статически обращайтесь к ним:
class MyClass
{
public static string Value { get; }
}
string x = MyClass.Value;