2012-02-18 62 views
1

我在我的程序的構造函數的屬性/訪問器方法中有類似這樣的內容。在C中替換/更改空白或空字符串值#

using System; 


namespace BusinessTrips 
{ 
    public class Expense 
    { 
     private string paymentMethod; 


     public Expense() 
     { 
     } 
     public Expense(string pmtMthd) 
     {    
      paymentMethod = pmtMthd; 


     } 


     //This is where things get problematic 
     public string PaymentMethod 
     { 
      get  
      { 
       return paymentMethod; 
      } 
      set 
      { 
       if (string.IsNullOrWhiteSpace(" ")) 
        paymentMethod = "~~unspecified~~"; 
       else paymentMethod = value; 
      } 
     } 



    } 
} 

當輸入一個新的屬性時,PaymentMethod爲空或空格,這顯然不起作用。有任何想法嗎?

+0

,只是重寫直接字段值('旅行=')assingnment與財產setter調用('旅行=') – Mikant 2012-02-18 05:59:50

回答

5

你或許只需要用string.IsNullOrWhiteSpace(value)替換string.IsNullOrWhiteSpace(" ")


從您發佈的代碼,你需要調用:的

this.PaymentMethod = pmtMthd; 

代替

paymentMethod = pmtMthd; 

資本p會使用你的財產,而不是直接的字符串。這就是爲什麼訪問類變量時使用this.是個好主意。在這種情況下,它是資本不是this.使其中的差別,但我養成使用this.

+0

我只是試過了,沒有骰子。 – user1200789 2012-02-18 05:39:17

+0

@ user1200789:然後我們需要看到更多的代碼。這裏沒有足夠的信息來告訴我們問題是什麼。你怎麼知道它不工作?你是使用調試器來檢查值,還是將它寫入控制檯...? – mpen 2012-02-18 05:42:17

+0

通過控制檯運行它,我添加了所有內容。 – user1200789 2012-02-18 05:49:56

1

讓巴納德PELLERIN的答案是正確的習慣。

但是,這裏是完整的代碼,我在LinqPad中測試以顯示它的工作原理。

public class Foo { 
     private string _paymentMethod = "~~unspecified~~"; 
     public string PaymentMethod 
     { 
      get  
      { 
       return _paymentMethod; 
      } 
      set 
      { 
       if (string.IsNullOrWhiteSpace(value)) 
        _paymentMethod = "~~unspecified~~"; 
       else _paymentMethod = value; 
      } 
     } 
} 

隨着主:

void Main() 
{ 
    var f = new Foo(); 
    f.PaymentMethod = ""; 
    Console.WriteLine(f.PaymentMethod); 
    f.PaymentMethod = " "; 
    Console.WriteLine(f.PaymentMethod); 
    f.PaymentMethod = "FooBar"; 
    Console.WriteLine(f.PaymentMethod); 
} 

輸出從控制檯:

​​ 如果你想表示在構造函數中的 '商業邏輯'