Замена / изменение пустого или нулевого строкового значения в C # - PullRequest
1 голос
/ 18 февраля 2012

В моем методе свойства / средства доступа конструктора для моей программы есть нечто подобное.

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, который является нулевым или пробелом, это явно не работает.Есть идеи?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2012

вам, возможно, просто нужно заменить string.IsNullOrWhiteSpace(" ") на string.IsNullOrWhiteSpace(value)?


Из вашего опубликованного кода вам нужно позвонить:

this.PaymentMethod = pmtMthd;

вместо

paymentMethod = pmtMthd;

Столица p будет напрямую использовать вашу собственность вместо строки.Вот почему рекомендуется использовать this. при доступе к переменным класса.В данном случае это прописная , а не this., которая имеет значение, но я привык бы использовать this.

1 голос
/ 18 февраля 2012

Жан-Барнард Пеллерен ответил правильно.

Но вот полный код, который я протестировал в 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);
}

Вывод из консоли:

~~unspecified~~
~~unspecified~~
FooBar
...