Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9 10 .. 14   вперед  Ctrl
 Re: Автосвойства  [new]
PinkCat
Member

Откуда:
Сообщений: 2320
Petro123,

Это или класс или экземпляр?
-----
Именно так - хрен его знает что там... и даже не всегда сразу ясно какой метод будет вызван...
14 мар 19, 13:47    [21832512]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
PinkCat
Member

Откуда:
Сообщений: 2320
Shocker.Pro,

а мужики и не знали
-----
Мне как-то без разницы что там у мужикоФФ...
Мне надо мои 2 Гб кода как-то месить... и Т-нотация мне это дело чуток облегчает...
14 мар 19, 13:49    [21832515]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
Petro123
Shocker.Pro,

I это интерфейсы)
А T - это параметры типов. Но PinkCat-у это ж не мешает
14 мар 19, 13:52    [21832520]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
PinkCat
Member

Откуда:
Сообщений: 2320
Shocker.Pro,

с заглавной "I"...
-----
...описываются интерфейсы.
Пойми - чем меньше Я потрачу времени на поиск и понимание кода - тем больше времени у меня будет для других дел.
А дел у меня много - вот сейчас побеждаю circular reference от мелкомягких на XSD-схемах.

Кстати - у них два метода компиляции схем - один по простой схеме - депрецирован, второй - по сету схем - актуальный.
Разница между ними - во втором аккурат circular reference, а первый - пережевывает и не давится...
Видимо когда переделывали пользовались другой нотацией...
14 мар 19, 13:57    [21832540]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
PinkCat
Shocker.Pro,

с заглавной "I"...
-----
...описываются интерфейсы.
Правда что ли? Извини, забыл смайлик "сарказм" добавить
14 мар 19, 14:05    [21832559]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
PinkCat
Member

Откуда:
Сообщений: 2320
Shocker.Pro,

забыл смайлик
-----
Смайлик - пустое - ты расскажи как схему в сете компилировать...
14 мар 19, 14:11    [21832571]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
skyANA
Пример реализации без инкапсуляции таков:
    class NoEncapsulation
    {
        public double ValueDouble;
        public string ValueString;
    }

Пример реализации с использованием инкапсуляции:
    class EncapsulationExample
    {
        private double valueDouble;
        private string valueString;

        public double ValueDouble
        {
            get { return valueDouble; }
            set 
            {
                valueDouble = value;
                valueString = value.ToString();
            }
        }

        public string ValueString
        {
            get { return valueString; }
            set 
            {
                double tmp_value = Convert.ToDouble(value); //здесь может возникнуть исключение
                valueDouble = tmp_value;
                valueString = value;
            }
        }
    }

приведите, пожалуйста пример конструктора устанавливающего оба поля для класса EncapsulationExample
14 мар 19, 14:16    [21832584]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
PinkCat
Смайлик - пустое - ты расскажи как схему в сете компилировать... Картинка с другого сайта.
Создавай ветку, задавай вопросы, там посмотрим )
14 мар 19, 14:25    [21832612]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
PinkCat
чем меньше Я потрачу времени на поиск и понимание кода - тем больше времени у меня будет для других дел.
ключевое слово "Я". Инди-разработчик? Пофиг, хоть с префикса "хер" все переменные начинай. А вот как только захочешь подключить к проекту еще вменяемого разраба, которому будешь живые деньги платить, тут сразу и поймешь, что лучше - следовать общепринятым стандартам или терять время/деньги на схеме, которая удобна только тебе.
14 мар 19, 14:29    [21832621]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Shocker.Pro
подключить к проекту еще вменяемого разраба,
генДир его понимает)).
Значит на собесе сразу спрашивают: "вы согласны миллион строк копать с классами на Т, К и S?
))
14 мар 19, 14:34    [21832633]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
Shocker.Pro,

приведите, пожалуйста пример с конструктором
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1310126&msg=21832584
14 мар 19, 14:43    [21832648]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
listtoview
Shocker.Pro,

приведите, пожалуйста пример с конструктором
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1310126&msg=21832584
я вопрос не понимаю. Пример чего?
14 мар 19, 14:52    [21832659]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
Petro123
Shocker.Pro
подключить к проекту еще вменяемого разраба,
генДир его понимает)).
Значит на собесе сразу спрашивают: "вы согласны миллион строк копать с классами на Т, К и S?
))
А, вот что значит в вакансии "умение работать с легаси кодом" Картинка с другого сайта.
14 мар 19, 14:56    [21832665]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
Shocker.Pro
listtoview
Shocker.Pro,

приведите, пожалуйста пример с конструктором
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1310126&msg=21832584
я вопрос не понимаю. Пример чего?

пример конструктора устанавливающего оба поля для класса EncapsulationExample
14 мар 19, 15:05    [21832675]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
listtoview
Shocker.Pro
пропущено...
я вопрос не понимаю. Пример чего?

пример конструктора устанавливающего оба поля для класса EncapsulationExample

мне интересно как вы сделаете это
через свойство или через поле
и почему
14 мар 19, 15:06    [21832679]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
listtoview
пример конструктора устанавливающего оба поля для класса EncapsulationExample
Зачем устанавливать оба поля? В приведенном примере это, как минимум, странно. При желании можно сделать три конструктора, устанавливающий одно из двух полей и пустой. Кроме того, я бы так вообще не построил свойства, достаточно иметь одно свойство, а второе выводить из первого, очевидно - double должно быть основным.
14 мар 19, 15:10    [21832689]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
Shocker.Pro
listtoview
пример конструктора устанавливающего оба поля для класса EncapsulationExample
Зачем устанавливать оба поля? В приведенном примере это, как минимум, странно. При желании можно сделать три конструктора, устанавливающий одно из двух полей и пустой. Кроме того, я бы так вообще не построил свойства, достаточно иметь одно свойство, а второе выводить из первого, очевидно - double должно быть основным.

хорошо, хорошо
устанавливающее одно поле
14 мар 19, 15:18    [21832705]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
Через установку свойства. Но в случае с установкой через string стоит кидать ArgumentException в случае неверного аргумента (не говоря уж о том, что тут нужно еще оперировать культурой - опустим)
14 мар 19, 15:31    [21832727]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
listtoview
и почему
потому что в свойствах присутствует логика, приводящая класс в согласованное состояние
14 мар 19, 15:33    [21832732]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
Shocker.Pro
listtoview
и почему
потому что в свойствах присутствует логика, приводящая класс в согласованное состояние

тогда всегда нужно использовать свойства вместо полей
а поля сетить только в свойствах
?
14 мар 19, 15:41    [21832744]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19958
listtoview
тогда всегда нужно использовать свойства вместо полей
а поля сетить только в свойствах
?
В данном случае да, потому что есть код, который обеспечивает согласованное состояние. Но есть исключения, иногда нужно избежать пересчета состояния, например для избежания зацикливания или увеличения производительности за счет исключения нескольких одинаковых пересчетов, тогда используются поля, а пересчет должен вызываться отложенно.
14 мар 19, 16:00    [21832763]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
fkthat
Member

Откуда:
Сообщений: 311
PinkCat
listtoview,

приватные поля начинаем с подчеркивания
-----
А зачем?
Просто проперти будут с заглавной, а поля - маленькой.
Все, поделили - понятно что именно используется с полувзгляда.
Если не надо совмещать с, например через CodeDom, то подчеркивания только загромождают код.


Чтобы внутри метода легко видеть, где поле, а где локальная переменная (или параметр, что де-факто то же самое).
14 мар 19, 16:05    [21832771]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
Roman Mejtes
Member

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

Поле это физическое значение или ссылка, а свойство это метод. Сравнивается несравнимое.
Всё равно, что сравнивать делегаты и структуры.
Методы определяют логику, а поля хранимые данные.
По правилам инкапсуляции, то, как я храню информацию не имеет значение, главное как я с ней взаимодействую через открытые члены типа (методами, которыми являются свойства). По этому, по большей части все поля имеют закрытую реализацию.
Значение свойств ни как не отражает то, как я храню данные (как я объявил в типе поля).

+ если вы работайте в unsafe то можно получить адрес поля экземпляра объекта, в то время как свойство адреса в области данных не имеет, и получить адрес его не возможно, только адрес значения\ссылки которое оно вернет в стек.

По этому открытые поля в структуре, это вполне нормально, если у неё есть какой то сложный Layout и мне нужно взаимодействовать с памятью напрямую.
using System;

namespace Examples
{
    class Program
    {
        public struct Vector
        {
            public int X { set; get; } //Свойство
            public int Y;              //Поле
        }

        unsafe static void Main(string[] args)
        {
            var vectors =  new[]
            {
                new Vector { X = 0x01, Y = 0x02 },
                new Vector { X = 0x04, Y = 0x05 }
            };
            fixed (Vector* arr = vectors)
            {
                Vector* refVector = arr + 1;
                //int* refX = &refVector->X; //Недопустим
                int* refY = &refVector->Y; //Допустим
                var x = refVector->X;
                int* refX = &x;
                int* realX = refY - 1;
                Console.WriteLine($"Start Array: {(IntPtr)arr}");
                Console.WriteLine($"RefVector  : {(IntPtr)refVector}");
                Console.WriteLine($"RefY       : {(IntPtr)refY}, value = {*refY}");
                Console.WriteLine($"RefX       : {(IntPtr)refX}, value = {*refX}");
                Console.WriteLine($"RealRefX   : {(IntPtr)realX}, value = {*realX}");
            }
            Console.ReadKey();
        }
    }
}

Результат:
Start Array: 39593272
RefVector : 39593280
RefY : 39593284, value = 5
RefX : 5238828, value = 4
RealRefX : 39593280, value = 4
14 мар 19, 16:18    [21832786]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
Roman Mejtes
Свойство это методы для ленивых, что обсуждаем то?
Что это за попытка высосать из пальца, какую то проблему?

Поле это физическое значение или ссылка, а свойство это метод. Сравнивается несравнимое.
Всё равно, что сравнивать делегаты и структуры.
Методы определяют логику, а поля хранимые данные.
По правилам инкапсуляции, то, как я храню информацию не имеет значение, главное как я с ней взаимодействую через открытые члены типа (методами, которыми являются свойства). По этому, по большей части все поля имеют закрытую реализацию.
Значение свойств ни как не отражает то, как я храню данные (как я объявил в типе поля).

+ если вы работайте в unsafe то можно получить адрес поля экземпляра объекта, в то время как свойство адреса в области данных не имеет, и получить адрес его не возможно, только адрес значения\ссылки которое оно вернет в стек.

По этому открытые поля в структуре, это вполне нормально, если у неё есть какой то сложный Layout и мне нужно взаимодействовать с памятью напрямую.
using System;

namespace Examples
{
    class Program
    {
        public struct Vector
        {
            public int X { set; get; } //Свойство
            public int Y;              //Поле
        }

        unsafe static void Main(string[] args)
        {
            var vectors =  new[]
            {
                new Vector { X = 0x01, Y = 0x02 },
                new Vector { X = 0x04, Y = 0x05 }
            };
            fixed (Vector* arr = vectors)
            {
                Vector* refVector = arr + 1;
                //int* refX = &refVector->X; //Недопустим
                int* refY = &refVector->Y; //Допустим
                var x = refVector->X;
                int* refX = &x;
                int* realX = refY - 1;
                Console.WriteLine($"Start Array: {(IntPtr)arr}");
                Console.WriteLine($"RefVector  : {(IntPtr)refVector}");
                Console.WriteLine($"RefY       : {(IntPtr)refY}, value = {*refY}");
                Console.WriteLine($"RefX       : {(IntPtr)refX}, value = {*refX}");
                Console.WriteLine($"RealRefX   : {(IntPtr)realX}, value = {*realX}");
            }
            Console.ReadKey();
        }
    }
}

Результат:
Start Array: 39593272
RefVector : 39593280
RefY : 39593284, value = 5
RefX : 5238828, value = 4
RealRefX : 39593280, value = 4

внутри класса надо использовать поля или свойства?
14 мар 19, 16:30    [21832800]     Ответить | Цитировать Сообщить модератору
 Re: Автосвойства  [new]
listtoview
Member

Откуда:
Сообщений: 1522
listtoview
Roman Mejtes
Свойство это методы для ленивых, что обсуждаем то?
Что это за попытка высосать из пальца, какую то проблему?

Поле это физическое значение или ссылка, а свойство это метод. Сравнивается несравнимое.
Всё равно, что сравнивать делегаты и структуры.
Методы определяют логику, а поля хранимые данные.
По правилам инкапсуляции, то, как я храню информацию не имеет значение, главное как я с ней взаимодействую через открытые члены типа (методами, которыми являются свойства). По этому, по большей части все поля имеют закрытую реализацию.
Значение свойств ни как не отражает то, как я храню данные (как я объявил в типе поля).

+ если вы работайте в unsafe то можно получить адрес поля экземпляра объекта, в то время как свойство адреса в области данных не имеет, и получить адрес его не возможно, только адрес значения\ссылки которое оно вернет в стек.

По этому открытые поля в структуре, это вполне нормально, если у неё есть какой то сложный Layout и мне нужно взаимодействовать с памятью напрямую.
using System;

namespace Examples
{
    class Program
    {
        public struct Vector
        {
            public int X { set; get; } //Свойство
            public int Y;              //Поле
        }

        unsafe static void Main(string[] args)
        {
            var vectors =  new[]
            {
                new Vector { X = 0x01, Y = 0x02 },
                new Vector { X = 0x04, Y = 0x05 }
            };
            fixed (Vector* arr = vectors)
            {
                Vector* refVector = arr + 1;
                //int* refX = &refVector->X; //Недопустим
                int* refY = &refVector->Y; //Допустим
                var x = refVector->X;
                int* refX = &x;
                int* realX = refY - 1;
                Console.WriteLine($"Start Array: {(IntPtr)arr}");
                Console.WriteLine($"RefVector  : {(IntPtr)refVector}");
                Console.WriteLine($"RefY       : {(IntPtr)refY}, value = {*refY}");
                Console.WriteLine($"RefX       : {(IntPtr)refX}, value = {*refX}");
                Console.WriteLine($"RealRefX   : {(IntPtr)realX}, value = {*realX}");
            }
            Console.ReadKey();
        }
    }
}

Результат:
Start Array: 39593272
RefVector : 39593280
RefY : 39593284, value = 5
RefX : 5238828, value = 4
RealRefX : 39593280, value = 4

внутри класса надо использовать поля или свойства?

например в конструкторе
14 мар 19, 16:33    [21832803]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9 10 .. 14   вперед  Ctrl
Все форумы / WinForms, .Net Framework Ответить