Possible Duplicate:
Why can I only access static members from a static function?Почему статические методы могут только вызывать статические методы не удобства статические методы
В то время как я пытался вызвать обычный метод внутри статического метода я получил ошибку:
An object reference is required for the non-static field, method, or property
Так что это означает, что мне нужно создать объект класса, а затем вызвать нестатический метод. Если я хочу вызвать метод напрямую, я должен объявить этот метод как Static.
Но в этом случае метод вызова и вызываемый метод принадлежат одному классу. Так почему мне нужно создать объект при вызове из статического метода, в то время как я могу вызвать нестатический метод из нестатического метода.
Ex:
class Program
{
//public void outTestMethod(int x,out int y)
//{
// y = x;
//}
static void Main(string[] args)
{
int a = 10;
int b = 100;
outTestMethod(a,out b);
}
private void outTestMethod(int x, out int y)
{
y = x;
}
}
Error:An object reference is required for the non-static field, method, or property
В вашем примере вы можете просто сделать 'private static void outTestMethod', и он будет работать. Вам не нужно «создавать объект», как вы сказали. – Icarus
Ошибка означает то, что она говорит; нестатический (экземпляр) метод может обращаться к членам экземпляра программы (в этом конкретном примере их нет), тогда как статический метод может получить доступ только к статическим членам (поскольку у него нет экземпляра для ссылки.) Это связано с тем, что это возможно иметь несколько экземпляров класса. –