ITVDN logo
Видеокурсы по
программированию

Доступ более чем к 7700 видеоурокам от $19.99

Подписка
ITVDN logo
Видеокурсы по
программированию

Доступ более чем к 7700 видеоурокам от $19.99

Подписка

Введение

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/

СТАТЬИ ПО СХОЖЕЙ ТЕМАТИКЕ
ВИДЕО КУРСЫ ПО СХОЖЕЙ ТЕМАТИКЕ
КОМЕНТАРИИ И ОБСУЖДЕНИЯ
ОЦЕНИТЕ ДАННЫЙ МАТЕРИАЛ

ПОДПИСКА НА ITVDN ВЫГОДА ДО 29.95$ НА ОБУЧЕНИЕ ПРЕСТИЖНЫМ ПРОФЕССИЯМ!

1 месяц19.99$
подписка

легкий старт в обучении

3 месяца49.99$
подписка

выгода от подписки до9.98$

6 месяцев89.99$
подписка

выгода от подписки до29.95$