-6
using System;
using System.Collections.Generic;

namespace Generics
{
    class Minivan
    {
        public void foo(int z, int x)
        {
            Console.WriteLine("foo with two parameters");
        }
        public void foo(params int[] z)
        {
            Console.WriteLine("foo with two params parameter");
        }
    }
    class D
    {
        public static void Main()
        {
            Minivan car3 = new Minivan();
            car3.foo(10,20); // which method will be called here!!!
        }
    }
}

どの foo メソッドが呼び出されますか? なぜ?

4

4 に答える 4

9

簡単な文で「具体的でないよりは具体的である

public void foo(int z, int x)と呼ばれます。

これは、C#のメソッド オーバーロード解決規則によるものです。

この回答で詳細を読むことができます

于 2015-02-17T10:18:54.363 に答える
2

コンパイラは、明示的なパラメーターを持つメソッドを選択します (c# 仕様で述べられているように)。ただし、3 つのパラメーターを指定してメソッドを呼び出すと、パラメーターの実装が呼び出されます

于 2015-02-17T10:18:37.800 に答える