2012-08-01 177 views
0

我有一個簡單的方法,我想通過一個標籤。通過參考傳遞標籤

現在,通過我的閱讀,任何基於關閉對象類應參照自動傳遞,所以這是我第一次嘗試在我的方法:

 public static void ValiateStepAsInt(String Step, int? Value, Label Error) 
     { 
      if (Value == null && Step != "") 
      { 
       Error.Text = "Error!!!"; 
       return; 
      } 
      Error.Text = ""; 
     } 

我沒有得到任何compilor錯誤,但每當我調用這個,它會設置Error.text,但是一旦它離開了方法,那個值就會消失(所以不是真的通過引用傳遞)。

因此,接下來我將「ref」選項添加到Label Error;希望這可以解決問題,但仍然是同樣的事情,該方法設置它,但一旦完成,價值消失。

當我試圖通過引用傳遞標籤時缺少什麼?

+2

除了你失去的錯誤,你的「按引用傳遞」的理解是錯誤的。請閱讀http://pobox.com/~skeet/csharp/parameters.html – 2012-08-01 13:30:34

+0

@JonSkeet:感謝您的好閱讀材料 – Limey 2012-08-01 13:41:36

回答

7

您正在將Text屬性重置爲條件語句正下方的空字符串。也許你想將Error.Text = "";換成else

如果不是這樣,那麼也許您將值設置在其他地方,從而覆蓋您在此處顯示的方法中的更改。

+0

哦!我原來的方法是回報!我忘了添加其他邏輯! D'哦! – Limey 2012-08-01 13:31:15

3

不是因爲這行代碼的消失值:

Error.Text = ""; 

只是在方法返回之前要設置標籤爲空字符串。

也許你意味着要做到這一點:

public static void ValiateStepAsInt(String Step, int? Value, Label Error) 
{ 
    if (Value == null && Step != "") 
    { 
     Error.Text = "Error!!!"; 
    } 
    else 
    { 
     Error.Text = ""; 
    } 
} 
從*實際*原因
+0

是的,我搞砸了。在我原來的函數中,我忘了在else語句中添加! – Limey 2012-08-01 13:33:27