【问题标题】:Passing the parameter传递参数
【发布时间】:2011-04-13 04:34:42
【问题描述】:

我将参数作为var 类型传递给函数。不接受,怎么传给函数?

例子

var Input = ................

listview1.itemsource = getinput(Input);

public List<answers>getinput(var inp)
{
................
..................
}

这里的函数不接受var。我能做什么?

【问题讨论】:

    标签: c# .net-3.5 var


    【解决方案1】:

    在函数中使用object 而不是var。然后将其转换为函数内的适当类型。

    【讨论】:

      【解决方案2】:

      var 用于类型推断,而不是声明动态变量。使用实际输入类型作为inp 的类型。

      【讨论】:

        【解决方案3】:
        public void getinput(object inp)
        {
        ................
        ..................
        }
        

        只要 C# 是强类型语言,编译器就总是知道你的变量属于什么真实类型:

        var Input = ....
        

        ...的类型总是已知的。这就是为什么你不能声明

        var a;
        

        这正是你想要做的事情

        public void getinput(var inp)
        {
            ................
            ..................
        }
        

        【讨论】:

          【解决方案4】:

          var 只是在 JavaScript 代码中用作变体。如果您使用的是var,那么您可以使用字符串或使用对象。

          public void getinput(object inp) 
          { 
              ................ 
              .................. 
          } 
          
          
          public void getinput(string inp) 
          { 
              ................ 
              .................. 
          } 
          

          【讨论】:

            【解决方案5】:

            正如其他人所说,您正在混合隐式类型变量(类型推断)和显式类型函数签名。

            你应该拥有的是:

            var Input = txtQuestion.text; // Implicitly typed variable of type string
            listview1.itemsource = getinput(Input); 
            
            // Strongly typed method taking string, returning List<answers> 
            public List<answers>getinput(string question) 
            { 
                var result = new List<answers>();
                result.Add(answer);
                return result; 
            } 
            

            抱歉,如果这与您的代码不完全匹配,但它应该展示您所追求的。

            var 关键字用于从赋值运算符的右侧推断变量的类型。在方法的签名中,没有赋值运算符,因此无法进行推理。此外,您始终可以传递从基类派生的任意数量的类型,这会使编译器难以确定参数的正确类型。 (您是指 DbReader、SqlDbReader 还是 IDbReader?)

            可以推断变量。参数不能。

            【讨论】:

              【解决方案6】:

              var 只能在同一语句中声明和初始化局部变量时使用;该变量不能初始化为 null,也不能初始化为方法组或匿名函数。

              MSDN:Implicitly Typed Local Variables

              【讨论】:

                【解决方案7】:

                它不接受第三行,因为您的函数属于 void 类型,并且您尝试将该函数的结果分配给 listview1.itemsource

                【讨论】:

                • 对不起,它会返回一个列表
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-09-27
                • 2014-09-02
                相关资源
                最近更新 更多