2012-07-19 178 views
-6

如何返回值作爲文本而不是void如何從方法返回字符串

實施例:

private void button1_Click(object sender, EventArgs e) 
{ 
    label1.Text = myvoid("foo", true); 
    //Error, Cannot imlicity convert type void to string 
} 

public void myvoid(string key , bool data) 
{ 
    if (data == true) 
    { 
     string a = key + " = true"; 
     MessageBox.Show(a); //How to export this value to labe1.Text? 
    } 
    else 
    { 
     string a = key + " = false"; 
     MessageBox.Show(a); //How to export this value to labe1.Text? 
    } 
} 

如何可以從返回而不是顯示一個消息框空隙,一個方法分配值,並將其應用到label1.Text

+7

'== == TRUE'壞 – Ryan 2012-07-19 16:52:34

+0

我看到了'void' – 2012-07-19 16:55:24

+1

好,不返回一個void,返回一個字符串..! – 2012-07-19 16:58:35

回答

3

更改返回類型爲字符串

public string myvoid(string key , bool data) 
{ 
    string a = string.Empty; 
    if (data == true) 
    { 
     a = key + " = true"; 
     MessageBox.Show(a);//How to export this value to labe1.Text 
    } 
    else 
    { 
     a = key + " = false"; 
     MessageBox.Show(a);//How to export this value to labe1.Text 
    } 
    return a; 
} 
+1

範圍,範圍,範圍。 – Ryan 2012-07-19 16:53:00

+0

除了在if語句之前聲明'string a' ... – 2012-07-19 16:53:32

+0

我錯過了爲什麼在這個downvotes ...它看起來像我們現在必須服務整個代碼在銀盤上它被upvoted? – 2012-07-19 16:54:36

5
private void button1_Click(object sender, EventArgs e) 
{ 
    label1.Text = myvoid("foo", true); 
} 

public string myvoid(string key , bool data) 
{ 
    if (data)  
     return key + " = true";   
    else  
     return key + " = false"; 
} 

正如在評論中提及Austin,這將是更乾淨

public string myvoid(string key , bool data) 
{ 
    return string.Format("{0} = {1}", key, data); 
} 
+2

'return string.Format(「{0} = {1}」,key,data);' – 2012-07-19 16:53:56

+0

'label1.Text = MessageBox.Show(myvoid(「foo」,true))'錯誤 – SomeWritesReserved 2012-07-19 16:57:24

+0

@SomeWritesReserved:Yea 。剛剛糾正。我沒有注意到標籤!謝謝:) – Shyju 2012-07-19 16:59:18

8
public string myvoid(string key, bool data) 
{ 
    return key + " = " + data; 
} 

而且你的方法不應該叫myvoid因爲它實際上返回一個值。像FormatValue會更好。

+0

偉大的答案。也許包括[string.Format](http://stackoverflow.com/questions/11565597/c-sharp-how-to-void-to-string#comment15299159_11565650)的可能性? – Adam 2012-07-19 16:58:33

+0

你不需要'data.'上的'.ToString()'嗎? – 2012-07-19 17:01:49

+2

@lc。 '+'應該照顧那個 – Adam 2012-07-19 17:03:32

1

,你將有你的方法的返回類型更改爲字符串

這樣的:public string myvoid(string key , bool data)

,然後返回字符串;

這樣的:

return a; 
0

退房http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspx

如果您確實想要使用void,則可以使用out謂詞。

+4

爲什麼你想在你真的想返回一個字符串時使用一個空格? 'out' +'void'真的只是壞風格(我想也會有開銷) – 2012-07-19 16:59:26

+0

真的嗎?我只是給出了他的問題的答案...... – MrWater 2012-07-19 17:00:06

+0

也小心地提出'out'謂詞,你不能將它與像'label1.Text'這樣的屬性一起使用,你必須創建一個字符串,將它發送到方法,然後設置'label1.Text'。 – NominSim 2012-07-19 17:00:08

0

使用字符串返回類型

private void button1_Click(object sender, EventArgs e)  
    {  
     label1.Text = myvoid("foo", true); 
    } 

public string myvoid(string key , bool data) 
{ 
    string a = string.Empty; 
    if (data == true) 
    { 
     a = key + " = true"; 
     MessageBox.Show(a); 
    } 
    else 
    { 
     a = key + " = false"; 
     MessageBox.Show(a); 
    } 
    return a; 
} 

如果你瓦納堅持使用無效,你可以做到這一點

private void button1_Click(object sender, EventArgs e)  
    {  
     myvoid("foo", true , label1); 
    } 

    public void myvoid(string key , bool data, label lb) 
    { 
     string a = string.Empty; 
     if (data == true) 
     { 
      a = key + " = true"; 
      MessageBox.Show(a); 
     } 
     else 
     { 
      a = key + " = false"; 
      MessageBox.Show(a); 
     } 

     lb.Text = a; 

    }