在其中调用类的方法

时间:2013-11-29 17:06:23

标签: c#-4.0

//这种情况背后的技术原因是什么??

3 个答案:

答案 0 :(得分:1)

您尝试在类中直接使用声明以外的语句 - 而不是在方法中。你什么时候期望这个方法被调用?

基本上所有你可以在一个类型中直接拥有一堆声明 - 方法,变量,构造函数,事件,嵌套类型等。方法调用(或任何其他语句)不属于声明必须在方法,构造函数等中编写。

答案 1 :(得分:0)

你有一些问题......当你试图在类定义中调用方法obj.m1()时,这甚至都不会编译。

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

当你创建一个类的实例时,它将创建一个名为obj的新成员变量,它是A - >的一个实例。上面的obj = newA();

您现在可以像第二个示例中那样调用obj的方法。

此外,为了使其编译,您需要修复m2方法:

public void m2() { //--> should have a curly brace 
   obj.m1(); // But This will work.
}

答案 2 :(得分:0)

方法调用statement 无法成为class declaration的一部分,但只有 Function members声明中的范围,例如方法,属性,构造函数等。

例如:

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

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

在上面的示例中,您可以看到我在SayHelloWorld metod中调用CallSayHelloWorldMethod方法。

<强>更新

在您的情况下,我能想到的最接近的事情是使用class的{​​{3}},只要您实例化您的类,就会执行您的方法调用:

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();