2013-11-29 3 views

ответ

1

Метод вызова statementне может быть частью classdeclaration, но только вFunction members деклараций области, такие как методы, свойства, конструкторы и т. д.

Например:

public class ExampleClass 
{ 
    private void SayHelloWorld() 
    { 
     Console.Writeline("Hello World!"); 
    } 

    public void CallSayHelloWorldMethod() 
    { 
     this.SayHelloWorld(); 
    } 
} 

В приведенном выше примере вы можете увидеть, что я вызываю метод SayHelloWorld в методе CallSayHelloWorldMethod.

Update:

Ближайший вещь, которую я могу думать в вашем случае использовать class «s constructor, где ваш вызов метода будет выполнена, как только вы будете создать экземпляр класса:

public class ExampleClass 
{ 
    //The class constructor 
    public ExampleClass() 
    { 
     this.SayHelloWorld(); 
    } 

    private void SayHelloWorld() 
    { 
     Console.Writeline("Hello World!"); 
    } 
} 

И когда вы инстанцировании, он будет сразу же называется:

//Your method call will be executed here 
ExampleClass exampleClass = new ExampleClass(); 
+0

, если вы не возражаете, не могли бы вы рассказать мне, что именно они не реализовали эту функциональность (оператор вызова метода как часть класса). Я имею в виду логику этого. потому что я изучал программирование, понимая самую глубокую его часть. поэтому мне мало любопытно узнать причину этого тоже ... я верю, что за этим будет логическое объяснение. – PSB

+0

@prasobkumarkp Когда вы ожидаете, что вызов вашего метода будет выполнен, только если он является частью уровня определения класса? Я могу предположить, что вы хотите, чтобы он выполнялся, как только экземпляр класса был создан, и для этого вы должны вызвать его в конструкторе класса, который выполняется, как только вы используете свой класс (объект). См. Мое обновление в ответе. –

1

Вы пытаетесь использовать инструкцию, отличную от декларации непосредственно внутри класса, а не внутри метода. Когда вы ожидали, что метод будет вызван?

В основном все вы можете непосредственно в типа куче объявлений - методы, переменные, конструкторы, событиях, вложенных типов и т.д. Метод требует (или любых других заявлений), которые не являются частью декларации, для записи в методах, конструкторах и т. д.

0

У вас есть несколько проблем ... Это не будет даже компилироваться, поскольку вы пытаетесь вызвать метод obj.m1() в определении класса.

A obj = new A(); 
obj.m1(); // Why this code wont work??? --> This must be inside a method 

При создании экземпляра класса он будет создавать новую переменную-член с именем OBJ, который является экземпляром A -> A OBJ = NEWA() выше;

Теперь вы сможете вызвать методы obj, как в вашем втором примере.

Кроме того, для того, чтобы получить это скомпилировать вам нужно будет исправить метод м2:

public void m2() { //--> should have a curly brace 
    obj.m1(); // But This will work. 
} 
Смежные вопросы