代码之家  ›  专栏  ›  技术社区  ›  Johnny Metz

在C中传递var作为方法参数#

  •  1
  • Johnny Metz  · 技术社区  · 7 年前

    我想通过 var 方法的参数:

    class Program
    {
        static void Main()
        {
            var client = new RestClient("http://example.com");
            var request = new RestRequest("resource/{id}", Method.POST);
            var response = client.Execute(request);
            PrintResponseStuff(response);
        }
    
        public static void PrintResponseStuff(var response)
        {
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.StatusDescription);
            Console.WriteLine(response.IsSuccessful);
            Console.WriteLine(response.Content);
            Console.WriteLine(response.ContentType);
        }
    }
    

    最简单的方法是传递一个var;但是,如果有一个数据类型可以保存 request 这也应该有效。有没有办法这样做,还是我需要单独传递每个项目?

    3 回复  |  直到 7 年前
        1
  •  5
  •   CodeNotFound dotnetstep    7 年前

    var 不是“类型”,而是编译糖。它足够聪明,知道它是什么类型的。事实上,你可以把鼠标悬停在上面看。

    改变 PrintResponseStuff 该类型的参数。

        2
  •  3
  •   maccettura    7 年前

    看起来您正在使用restsharp,根据您调用的示例代码 RestClient.Execute() ,可以 只有 返回 IRestResponse . 因此,您的代码很容易是:

    static void Main()
    {
        var client = new RestClient("http://example.com");
        var request = new RestRequest("resource/{id}", Method.POST);
    
        //response is always IRestResponse if you call Execute()
        var response = client.Execute(request);
    
        PrintResponseStuff(response);
    }
    
    public static void PrintResponseStuff(IRestResponse response)
    {
        Console.WriteLine(response.StatusCode);
        Console.WriteLine(response.StatusDescription);
        Console.WriteLine(response.IsSuccessful);
        Console.WriteLine(response.Content);
        Console.WriteLine(response.ContentType);
    }
    
        3
  •  -1
  •   CodeNotFound dotnetstep    7 年前

    你可以用 object dynamic , var 不可能