2012-07-18 77 views
-3

如何从数据类型从字符串更改为var?C#字符串到var数据类型

实施例:

private void button1_Click(object sender, EventArgs e) 
    { 
     work("checkBox1"); 
    } 

    public void work(string check) 
    { 

    string number = "1"; 
      if (number == "1") 
      { 
       check.Checked = true; 
       MessageBox.Show("True"); 
      } 
      else 
      { 
       check.Checked = false; 
       MessageBox.Show("False"); 
      } 

    } 

如何解决这个问题

'字符串' 中不包含关于 '经过' 的定义和没有扩展 方法 '经过' 接受

但我想工作按钮插入复选框名称

+2

你想从字符串转换为var ... erm wha! – 2012-07-18 15:34:05

+2

c#中没有'var'数据类型。 'var'关键字指示编译器推断局部变量的类型,但一旦推断出类型,它就是固定的。例如,这不会编译:'var x =“Hello”; Console.WriteLine(X); x = 4; Console.WriteLine(x);'第三条语句导致编译器错误“不能将类型'int'隐式转换为'string'”。 – phoog 2012-07-18 16:27:00

回答

8

变化..

public void work(string check) 

...到...

public void work(CheckBox check) 

然后调用它像这样:

work(checkBox1); 

可以用绳子工作,然后找到通过Form.Controls进行控制,但使用CheckBox本身会更容易。


为了满足挑剔的@daveL,你不能有一个var类型作为方法的参数。要使代码正常工作,您可以使用CheckBoxdynamic

对于认为这是可能的世界的@ daveL's,这里有一些关于Implicitly Typed Local Variables的文档。

+0

打败我吧。 +1。好答案。 – David 2012-07-18 15:33:00

+0

我会提供'work'的代码,但它看起来像填充代码,因为它对我来说没有意义。 – 2012-07-18 15:35:36

+0

这很好,但你如何从字符串转换为var? – 2012-07-18 15:37:27

1

最简单的方法是将实际引用传递给复选框,而不仅仅是复选框的名称。

private void button1_Click(object sender, EventArgs e) 
{ 
    work(checkBox1); 
} 

public void work(CheckBox check) 
{ 

string number = "1"; 
     if (number == "1") 
     { 
      check.Checked = true; 
      MessageBox.Show("True"); 
     } 
     else 
     { 
      check.Checked = false; 
      MessageBox.Show("False"); 
     } 

}