2012-02-18 118 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); 
} 

输出从控制台:

​​ 如果你想表示在构造函数中的 '商业逻辑'