Оператор nameof: Нова функція С# 6.0 - Блог ITVDN
ITVDN: курси програмування
Відеокурси з
програмування

    Обери свою IT спеціальність

    Почати безкоштовно

    Обери свою IT спеціальність

    Почати безкоштовно

      Оператор nameof: Нова функція С# 6.0

      advertisement advertisement

      Введение

      12 ноября 2014 в рамках конференции Connect () Microsoft презентовала Visual Studio 2015, которая имеет много новых и интересных возможностей тестирования для разработчиков. Microsoft анонсировала новую версию C# - C# 6.0, улучшенную и обновленную. Одно из нововведений функций C# 6.0 –оператор nameof.


      Что такое оператор nameof

      С введением оператора nameof теперь возможно избегать сложно закодированых строчек в коде. Оператор nameof принимает имя элементов кода и возвращает строчный литерал этого элемента. Параметры, которые принимает оператор nameof, включают имя класса и всех его членов, таких как: методы, переменные и константы.

      Довольно удобно использовать строчные литералы, чтобы бросить ArgumentNullException (назвать аргумент винованым) и вызвать события PropertyChanged (чтоб назвать измененное свойство), но велика вероятность появления ошибки, потому что можно неправильно их записать или не восстановить после рефакторинга. Выражения оператора nameof являются особым видом строчного литерала, где компилятор проверяет, есть ли у Вас что-то с заданным именем и Visual Studio знает, куда он ссылается, поэтому навигация и рефакторинг будут работать легко.

      Оператор nameof может быть полезным для разных сценариев, таких как INotifyPropertyChanged, ArgumentNullException и отображения.

      Пример 1

      string person;

                  Console.WriteLine(nameof(person)); // prints person 

                  int x = 2;

                  Console.WriteLine(nameof(x));     //prints x  

      Пример 2

      class Operatornameof

              {

                  public Operatornameof(string name) //constructor 

                  {

                      if (name == null)

                          throw new ArgumentNullException(nameof(name)); // use of nameof Operator

                      else

                          Console.WriteLine("Name: " + name);

                  }

              }

      Пример 3

      class Operatornameof

              {

                  private int _price;

                  public int price

                  {

                      get

                      {

                          return this._price;

                      }

                      set

                      {

                          this._price = value;

                          PropertyChanged(this, new PropertyChangedEventArgs(nameof(this.price)));   //// INotifyPropertyChanged 

                      }

                  }

                  private void PropertyChanged(Operatornameof operatornameof1, PropertyChangedEventArgs propertyChangedEventArgs)

                  {

                      throw new NotImplementedException();

                  }

              }

      Программа 1 с использованием Visual Studio 2013

      using System;

      using System.Text;

      namespace CSharpFeatures

      {

          public class operatornameof

          {

              public operatornameof(string name, string location, string age)

              {

                  if (name == null)

                      throw new ArgumentNullException("name");

                  else

                      Console.WriteLine("\n Name: " + name);

                  if (location == null)

                      throw new ArgumentNullException("location");

                  else

                      Console.WriteLine(" Location: " + location);

                  if (age == null)

                      throw new ArgumentNullException("age");

                  else

                      Console.WriteLine(" Age: " + age);

              }

              static void Main(String[] args)

              {

                  operatornameof p = new operatornameof("Abhishek", "Ghaziabad", "23");

                  Console.ReadKey();

              }

          }

      }

      Программа 1 с использованием Visual Studio 2015 Preview

      using System;

      using System.Text;

      namespace CSharpFeatures

      {

          public class Operatornameof

          {

              public Operatornameof(string name, string location, string age)

              {

                  if (name == null)

                      throw new ArgumentNullException(nameof(name));

                  else

                      Console.WriteLine("Name: " + name);

                  if (location == null)

                      throw new ArgumentNullException(nameof(location));

                  else

                      Console.WriteLine("Location: " + location);

                  if (age == null)

                      throw new ArgumentNullException(nameof(age));

                  else

                      Console.WriteLine("Age: " + age);

              }

              static void Main(String[] args)

              {

                  Operatornameof p = new Operatornameof("Abhishek", "Ghaziabad", "23");

                  Console.Read();

              }

          }

      }  

      Программа 2 с использованием Visual Studio 2013

      using System;

      namespace CSharpFeatures

      {

          class Operatornameof1

          {

              static void Main(string[] args)

              {

                  details d = new details();

                  d.Age = 23;

                  d.Name = "Abhishek";

                  Console.WriteLine("\n Name: {0} ", d.Name);

                  Console.WriteLine(" Age: {0} ", d.Age);

                  Console.ReadKey();

              }

          }

          class details

          {

              private string _Name;

              public int _Age;

              public string Name

              {

                  get { return this._Name; }

                  set { this._Name = value; }

              }

              public int Age

              {

                  get { return this._Age; }

                  set { this._Age = value; }

              }

          }

      }

      Программа 3 с использованием Visual Studio 2015 Preview

      using System;

      namespace CSharpFeatures

      {

          class Operatornameof2

          {

              static void Main(string[] args)

              {

                  details d = new details();

                  Console.WriteLine("{0} : {1}", nameof(details.Name), d.Name);

                  Console.WriteLine("{0} : {1}", nameof(details.Age), d.Age);

                  Console.ReadKey();

              }

          }

          class details

          {

              public string Name { get; set; } = "Abhishek";

              public int Age { get; set; } = 23;

          }

      }

      Из данной статьи Вы узнали, как использовать оператор nameof, чтобы избежать использования сложно закодированых строчек в коде. Надеемся, что Вам понравилась новая функция C# 6.0, введенная Microsoft.

      Источник: http://www.c-sharpcorner.com/UploadFile/16101a/nameof-operator-a-new-feature-of-C-Sharp-6-0/

      КОМЕНТАРІ ТА ОБГОВОРЕННЯ
      advertisement advertisement

      Пакети підписки з доступом до всіх курсів та сервісів

      Стартовий
      • Усі відеокурси на 3 місяці
      • Тестування з 10 курсів
      • Перевірка 5 домашніх завдань
      • Консультація з тренером 30 хв
      Базовий
      • Усі відеокурси на 6 місяців
      • Тестування з 16 курсів
      • Перевірка 10 домашніх завдань
      • Консультація з тренером 60 хв
      Преміум
      • Усі відеокурси на 1 рік
      • Тестування з 24 курсів
      • Перевірка 20 домашніх завдань
      • Консультація з тренером 120 хв
      new
      Преміум Plus
      • Усі відеокурси на 1 рік
      • Тестування з 24 курсів
      • Перевірка 20 домашніх завдань
      • Консультація з тренером 120 хв
      • Завантаження відео уроків
      Notification success
      Ми використовуємо cookie-файли, щоб зробити взаємодію з нашими веб-сайтами та послугами простою та значущою.