Автоматические Свойства в C# 3 - Должны объявить, что тело для добирается, если я объявляю один для набора?

TryParse быстрее...

первой из этих функций, Синтаксического анализа, является тот, который должен быть знаком любому.Net разработчику. Эта функция возьмет строку и попытку извлечь целое число из него и затем возвратить целое число. Если это сталкивается с чем-то, что это can’t анализируют тогда, это бросает FormatException или если числом является слишком крупный OverflowException. Кроме того, это может бросить ArgumentException при передаче его нулевое значение.

TryParse является новым дополнением к новой платформе.Net 2.0, которая решает некоторые проблемы с исходной функцией Синтаксического анализа. Основное различие - то, что обработка исключений является очень медленной, поэтому если TryParse неспособен проанализировать строку, это не выдает исключение как Синтаксический анализ, делает. Вместо этого это возвращает булевскую переменную, указывающую, смогло ли это успешно проанализировать число. Таким образом, необходимо передать в TryParse и строку, которая будет проанализирована и Int32 параметр для заполнения. Мы будем использовать профилировщика для исследования разности оборотов между TryParse и Синтаксическим анализом в обоих случаях, где строка может быть правильно проанализирована и в случаях, где строка не может быть правильно проанализирована.

класс Преобразования содержит серию функций для преобразования одного базового класса в другого. Я полагаю, что Преобразовывают. ToInt32 (строка) просто проверяет на пустую строку (если строка является пустой, это возвращается, нуль в отличие от Синтаксического анализа) тогда просто называет Int32. Синтаксический анализ (строка). I’ll используют профилировщика, чтобы подтвердить это и видеть, если использование Преобразовывает в противоположность Синтаксическому анализу, имеет любой реальный эффект на производительность.

Источник с примерами

Hope это помогает.

7
задан Imran Ali Khan 25 July 2015 в 12:50
поделиться

4 ответа

Если вы собираетесь добавить логику в набор, вам также необходимо добавить ее в get. Обратите внимание, в вашем наборе вы на самом деле не устанавливаете значение для чего-либо?

Добавьте поле поддержки,

private string _vin;

и верните его в get.

public string VIN
{
    get { return _vin; }
    set
    {
      if (value.Length != 17) 
        throw new ArgumentOutOfRangeException("VIN", "VIN must be 17 characters"); 
      else
        _vin = value;
    }
}
17
ответ дан 6 December 2019 в 06:25
поделиться

Когда автоматические свойства При использовании компилятор автоматически генерирует поле поддержки. Когда вы объявляете свое собственное, у него нет возможности узнать, какое поле использовать для метода get. Таким образом, вы должны объявить оба или ничего.

Между прочим, ваш текущий метод set проверяет только значение - он никогда не присваивает его ничему.

6
ответ дан 6 December 2019 в 06:25
поделиться

Да, вам также нужно будет объявить реализацию get. О, и ваш установленный код не делает ничего, кроме проверки. Вам также нужно будет предоставить дополнительную реализацию для этого, предполагая, что вы хотите установить значение, если оно проходит проверку.

Если вам нужно что-то большее, чем просто базовая реализация get / set, вам придется реализовать все свойство, не только разница.

3
ответ дан 6 December 2019 в 06:25
поделиться

Вам придется использовать старое доброе поле поддержки. Сокращенные обозначения нельзя смешивать. Единственное дополнительное развлечение - это изменить модификатор доступа при получении и установке, например get; частный набор;

2
ответ дан 6 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: