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

Выбери свою 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

Покупай подпискус доступом ко всем курсам и сервисам

Библиотека современных IT знаний в удобном формате

Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

Стартовый
  • Все видеокурсы на 3 месяца
  • Тестирование по 10 курсам
  • Проверка 5 домашних заданий
  • Консультация с тренером 30 мин
59.99 $
Оформить подписку
Премиум Plus
  • Все видеокурсы на 1 год
  • Тестирование по 24 курсам
  • Проверка 20 домашних заданий
  • Консультация с тренером 120 мин
  • Скачивание видео уроков
199.99 $
Оформить подписку
Базовый
  • Все видеокурсы на 6 месяцев
  • Тестирование по 16 курсам
  • Проверка 10 домашних заданий
  • Консультация с тренером 60 мин
89.99 $
Оформить подписку
Notification success