venkatesh (chennai) Ответов: 2

Какой метод лучше всего подходит для очистки значений текстового поля?


Способ 1 :

общественного недействительными ClearControlValues()
{
txtHolidayDate.Текстовая строка.Пустой;
txtHolidayName.Текстовая строка.Пустой;
txtHolidayDescription.Текстовая строка.Пустой;
}

Метода Method2:

общественного недействительными ClearControlValues()
{
txtHolidayDate.Text = txtHolidayName.Text = txtHolidayDescription.Текст = строка.Пустой;
}

Что я уже пробовал:

Which method is best way to clear the textbox values

2 Ответов

Рейтинг:
1

#realJSOP

Это вопрос стиля. Если у вашего работодателя нет опубликованного стиля кодирования:

0) Если вы редактируете существующий файл, используйте стиль, который используется в этом файле.

1) Если вы создаете новый файл, сделайте это так, как вам больше нравится.

Лично я предпочитаю одно задание на строку, но это я.


Рейтинг:
1

Richard Deeming

Я согласен с Джоном. Обе версии компилируются примерно в один и тот же IL, так что это просто вопрос предпочтения.

Глядя на метод два, вы можете ожидать, что он сделает что-то вроде:

txtHolidayDescription.Text = string.Empty;
txtHolidayName.Text = txtHolidayDescription.Text;
txtHolidayDate.Text = txtHolidayName.Text;

Но если вы изучите скомпилированный IL, то увидите, что свойство get метод никогда не вызывается. Вместо этого вы просто получаете:
txtHolidayDescription.Text = string.Empty;
txtHolidayName.Text = string.Empty;
txtHolidayDate.Text = string.Empty;

Вы можете продемонстрировать это с помощью простого класса:
public class Foo
{
    public string Text
    {
        get { throw new InvalidOperationException("Boo!"); }
        set { }
    }
}

static class Program
{
    static void Main()
    {
        Foo x = new Foo();
        Foo y = new Foo();
        Foo z = new Foo();
        
        x.Text = y.Text = z.Text = "Hello";
        Console.WriteLine("Hooray!");
    }
}
При выполнении этого кода не возникает никаких исключений, что свидетельствует о том, что get метод не вызывается.