0

私は C# とオブジェクト指向言語全般の初心者なので、Web でこのチュートリアルを見つけて、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 用です。

このチュートリアルは Google の「C# チュートリアル」の #2 にあるので、私と将来の学習者への私の質問は次のとおりです。まったくの初心者でもクリア?

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

使用しているチュートリアルは誤解を招く恐れがあります。C#には、独立した機能はありません。すべての実行可能コードは、クラスに属するメソッドに配置されます。

これが、「関数」という用語を避け、一般的に使用されるもの(クラスのメソッド)を使用するのが最善である理由です。

メソッドは静的にすることができます-それらはクラスで呼び出され、クラスインスタンスを必要としません、またはインスタンスメソッド-それらは最初に作成する必要がある既存のインスタンスを必要とします

于 2012-11-13T13:51:29.387 に答える
1

メソッドはインスタンスに関連しています。クラスからインスタンスを作成して呼び出す必要があります。その後、「同じように」メソッドを呼び出します。

ただし、staticメソッドはクラスメソッドであるため、インスタンスを作成せずに呼び出すことができます

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

クラス名でメソッドを呼び出しますProgram.AddNumbers(1,2)

ただし、メソッドが静的な場合は、クラスの名前を指定せずに、同じクラス内の静的メソッド内で呼び出すことができます

 AddNumber(1,2)

BecuauseAddNumberは同じクラス内で呼び出される静的メソッドであるためProgram

于 2012-11-13T13:41:53.157 に答える
0

チュートリアルでは、メソッドをネストできないことは当然のことと考えています。

メソッドにメソッドを含めることはできません。メソッドはクラスまたは構造体の内部にある必要があります。

あなたがしたこと-チュートリアルが進む限り、あなたが得た解決策は正しいです。

于 2012-11-13T13:36:32.780 に答える