我是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
本教程可能理所当然地认为方法不能嵌套。
方法不能包含方法 - 方法应位于类或结构中。
您所做的 - 就教程而言,您得到的解决方案是正确的。