0

一般来说,我是 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# 版本,但作为我的结论,本教程适用于 C# 2.0。

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

4

4 回答 4

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 在他的回答中指出的那样,作者可能已经理所当然地认为您不能嵌套函数。

于 2012-11-13T13:37:21.840 回答
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

于 2012-11-13T13:41:53.157 回答
1

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

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

方法可以是静态的——那些在类上调用并且不需要类实例,或者实例方法——那些需要一个必须首先创建的现有实例

于 2012-11-13T13:51:29.387 回答
0

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

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

你所做的——就教程而言,你得到的解决方案是正确的。

于 2012-11-13T13:36:32.780 回答