功能教程不够清晰

时间:2012-11-13 13:34:08

标签: c# function methods

我是C#和面向对象语言的绝对初学者,因此我在网上找到了这个教程并且坚持到functions。 现在,它说: 你声明这样的函数:

public int AddNumbers(int number1, int number2) 
{
     int result = number1 + number2;
     return result; 
}

但是并没有说这个方法必须在Main()方法之外。 而且,它说这个函数是这样调用的:

int result = AddNumbers(10, 5);
Console.WriteLine(result);

我的猜测是你必须把这段代码放在Main()方法中,但它并没有说你必须先创建对象所以正确的代码是:

Program add = new Program();
int result = add.AddNumbers(10, 5);
Console.WriteLine(result);

'Program'是父类的名称。

所以我现在很困惑。我不熟悉C#版本,但作为我的结论,tutorial适用于C#2.0。

由于本教程是#2 for google“C#tutorial”,我对我和未来学习者的问题是: 是这个错误还是你在C#2.0中这样做的方式,还是只是以这样的方式编写,所以它对于绝对的初学者来说还不够清楚?

4 个答案:

答案 0 :(得分:1)

对于初学者来说,他们的例子不是很清楚,但看起来他们假设你是在同一个班级内调用这个函数。

所以这样的事情会起作用:

public class Foo
{
   public void Bar()
   {
     int result = Add(1, 3);
   }

   public int Add(int first, int second)
   {
     return first + second;
   }
}

然后可以在Main方法中使用,例如:

public static Main()
{
  var foo = new Foo();
  foo.Bar();
}

正如@Oded在他的回答中指出的那样,作者可能理所当然地认为你无法嵌套函数。

答案 1 :(得分:1)

方法与实例有关,你应该通过从类中创建一个实例来调用它们,然后调用方法“和你一样”

但是,static方法是类方法,因此您可以在不创建实例的情况下调用它们

 public static int AddNumbers(int number1, int number2) 
  {
 int result = number1 + number2;
 return result; 
  }

并按类名Program.AddNumbers(1,2)

调用该方法

但是,如果方法是静态的,您可以在同一个类中的静态方法中调用它而不指定类的名称

 AddNumber(1,2)

因为AddNumber是在同一个类Program

中调用的静态方法

答案 2 :(得分:1)

您使用的教程具有误导性。在c#中没有独立功能。所有可执行代码都放在属于类的方法中。

这就是为什么最好避免使用“函数”这个术语并使用常用的方法 - 类(方法)。

方法可以是静态的 - 那些在类上调用,不需要类实例或实例方法 - 那些需要现有实例,必须先创建

答案 3 :(得分:0)

本教程可能理所当然地认为方法不能嵌套。

方法不能包含方法 - 方法应该在类或结构中。

你做了什么 - 就教程而言,你所获得的解决方案是正确的。