函数教程不够清晰



我是C#和面向对象语言的绝对初学者,所以我在网上找到了本教程,并停留在函数上。现在,它说:你像这样声明函数:

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

"程序"是父类的名称。

所以我现在很困惑。我不熟悉 C# 版本,但正如我的结论,本教程适用于 C# 2.0。

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

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

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

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

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

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

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

方法与实例相关,您应该通过从类创建实例来调用它们,然后调用该方法"与您相同"

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

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

然后按其类名调用该方法Program.AddNumbers(1,2)

但是,如果该方法是静态的,则可以在同一类中的静态方法中调用它,而无需指定类的名称

 AddNumber(1,2)

Becuause AddNumber 是在同一类中调用的静态方法Program

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

方法不能包含方法 - 方法应位于类或结构中。

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

最新更新