Оператор 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
  • Усі відеокурси на 12 місяців
  • Тестування з 24 курсів
  • Перевірка 20 домашніх завдань
  • Консультація з тренером 120 хв
  • Завантаження відео уроків
199.99 $
Придбати
Базовий
  • Усі відеокурси на 6 місяців
  • Тестування з 16 курсів
  • Перевірка 10 домашніх завдань
  • Консультація з тренером 60 хв
89.99 $
Придбати
Notification success