Поскольку getText()
нестатический, вы не можете вызвать его из статического метода.
Чтобы понять, почему вы должны понимать разницу между ними.
Экземпляр ( нестатические) методы работают с объектами определенного типа (класса). Они создаются с помощью следующего типа:
SomeClass myObject = new SomeClass();
Чтобы вызвать метод экземпляра, вы вызываете его в экземпляре (myObject
):
myObject.getText(...)
Однако статический метод / поле можно вызывать только по типу напрямую, например: Предыдущее утверждение неверно. Можно также ссылаться на статические поля с ссылкой на объект, например myObject.staticMethod()
, но это обескураживает, поскольку не дает понять, что они являются переменными класса.
... = SomeClass.final
И они не могут работать вместе, поскольку они работают в разных пространствах данных (данные экземпляра и данные класса)
Позвольте мне попытаться объяснить. Рассмотрим этот класс (psuedocode):
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = "0";
}
Теперь у меня следующий прецедент:
Test item1 = new Test();
item1.somedata = "200";
Test item2 = new Test();
Test.TTT = "1";
Каковы значения?
Хорошо
in item1 TTT = 1 and somedata = 200
in item2 TTT = 1 and somedata = 99
Другими словами, TTT
является базой данных, которая разделяется всеми экземплярами типа. Поэтому не имеет смысла говорить
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = getText(); // error there is is no somedata at this point
}
. Поэтому возникает вопрос: почему TTT статический или почему getText () не статичен?
Удалите static
, и он должен пройти мимо этой ошибки - но не понимая, что делает ваш тип, это только прилипающая штукатурка до следующей ошибки. Каковы требования getText()
, которые требуют, чтобы он был нестационарным?
Мы все еще изо всех сил пытаемся понять, КАК из этой проблемы, но кажется, что [ourdomain\SQLAccessGroup] был искажен консультантом другого имени пользователя (это - часть установки CRM MS). Нам наконец удалось использовать некоторую логику и некоторые старые добрые сравнения SID для определения, кто играл в игру самозванца.
Наша подсказка произошла, когда я пытался добавить вход в систему как пользователь к базе данных (так как это, предположительно, уже существовало), и получил эту ошибку:
The login already has an account under a different user name.
Так, я начал исследовать каждого пользователя DB и смог выяснить преступника. Я в конечном счете разыскал его и смог переименовать пользователя и вход в систему так, чтобы установка CRM работала. Интересно, могу ли я тарифицировать их 165,00$ в час в течение моего времени... :-)
это, когда Вы восстанавливаете от резервного копирования или чего-то? Я нашел, что следующие работы для меня в ситуациях, когда у меня есть проблемы с учетными записями пользователей в sql
EXEC sp_change_users_login ‘Auto_Fix’, ‘user_in_here’