|
DateTime
|
|||
---|---|---|---|
#18+
Подскажите, зачем структуру DateTime сделали неизменяемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 17:09 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Подскажите, зачем структуру DateTime сделали неизменяемой? Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 17:47 |
|
DateTime
|
|||
---|---|---|---|
#18+
Изопропилушёл за попкорном а чито, хороший вопрос. ждём набросов свенома на бедную DateTime. хотя орхитектура DateTime и правда напростительно ужасна. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 17:49 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVosttjohn2007Подскажите, зачем структуру DateTime сделали неизменяемой? Код: c# 1. 2. 3. 4. 5.
А это что за код, о чем он? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 17:53 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVosttjohn2007Подскажите, зачем структуру DateTime сделали неизменяемой? Код: c# 1. 2. 3. 4. 5.
А, я понял, кажется. а в чем будет разница с var dateTime = new DateTime(2014, 2, 30); ? Ладно упрощу вопрос, зачем сделали структуру Int32 неизменяемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 18:00 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Ладно упрощу вопрос, зачем сделали структуру Int32 неизменяемой? Слишком просто получилось и бессмысленно )) Тогда по другому, зачем структуры делать неизменяемыми? И кто такой свеном? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 18:06 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007И кто такой свеном? ))Это страшный человек. Лучше вообще не знать, что такие люди на земле есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 18:18 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007А, я понял, кажется. а в чем будет разница с var dateTime = new DateTime(2014, 2, 30); ? ошибка будет. и dateTime нельзя будет воспользоваться. а что делать с существующим dateTime, над которым вздумали поиздеваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 18:27 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Тогда по другому, зачем структуры делать неизменяемыми? чтоб их нельзя было изменять. например, из параллельного потока. и вообще, даже изменяемые структуры не такие уж изменяемые: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
что увидем на экране? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 18:31 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007, или так Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 19:01 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степиjohn2007, или так Код: c# 1. 2. 3. 4.
Вывело 1000000000. А в случае с дженериком не компилится. Т.е. вызов list[0] у дженерика приводит к выполнению new A()? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 20:22 |
|
DateTime
|
|||
---|---|---|---|
#18+
Pallaris, авторТ.е. вызов list[0] у дженерика приводит к выполнению new A()? получаем копию. new A() - это не копия, это default(A) Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 20:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, А list[0] у массива почему копию не возвращает? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:10 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Подскажите, зачем структуру DateTime сделали неизменяемой?Ну это маразм. Обычный маразм. Так же они, например, сделали структурой Guid. Поэтому вы не можете, например, обнулить его. Вместо этого вам предлагается использовать default(Guid), который есть 000...000. Бред несусветный. Ну да ладно, таких перлов в .Net полно, не обращайте внимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:14 |
|
DateTime
|
|||
---|---|---|---|
#18+
Pallaris, Потому что это фишка оптимизатора компилятора, для массивов возвращается указатель на упаковку - тут же нет дженериков, но только вы приведете что вернулось к структуре, песня будет старой. или с левой стороны поставите IList<A> ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:32 |
|
DateTime
|
|||
---|---|---|---|
#18+
Блин о чем тема - что структура это не ссылочный тип, или что структура не может отнаследоваться от структуры? Или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:34 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVosttждём набросов свеномаА что Свеном теперь тут будет ошиваться? Я думал, он облегчился и пошёл заниматься своими крутяцкими проектами. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:34 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, В мсдн пишут что для дженерика list[0] вернет выражение (видимо, new a { v1=1, v2=2 }). Оно что, все время так будет работать при любом обращении к list[0]? Или я что-то не так понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:39 |
|
DateTime
|
|||
---|---|---|---|
#18+
Pallaris, Я что те вразумлю вас что значит для всех и всегда? ну и для второго будет list[1].V1=100 некомпильно.. ну наверное будет всегда, пока в следующих версиях не исправят ( исправили же захват локальных в анонимах)по просьбе трудящихся, хотя Э.Л. писал что исправили по причине - так как заебся давать объяснения.. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 21:50 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, Так может и фиксить не надо, я не знаю. Я не шарю, как оно работает, поэтому и задаю вопросы. Получается при любом обращении к дженерику для структуры будет создаваться новый объект (где, в куче?) -я правильно понимаю? А list<A> list = new list<A> { new a ()} просто говорит, что enumeraor, когда к нему обратятся, должен вернуть new a(), но на этапе объявления дженерика ничего не создается? Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 22:05 |
|
DateTime
|
|||
---|---|---|---|
#18+
Pallaris, у вас какая то куча. < когда к нему обратятся, должен вернуть new a()> копию зачем ее запаковывать и распаковывать <но на этапе объявления дженерика ничего не создается? > создается объект внутренним массивом вообще по list<A> list = new list<A> { new a ()} можно еще один топик создать Мы так можем до бесконечности раскручивать стек вопросов и ответов, структуры это очень хитрые и своенравные типы я понимаю что не хватает знаний ( это не порок, если вы их ищите), надо наверно обратиться к сети, почитать блог Эрика Липперта есть частичный перевод, он как бы объясняет подробно все плюшки с точки зрения компилятора и логики ( почему так а не так). в теме поста это абсурдно обсуждать. зы автор Guid. Поэтому вы не можете, например, обнулить его. Вместо этого вам предлагается использовать default(Guid), Guid.Empty зачем его обнулять? мы сами будем его генерить? дааа, трудно быть богом.... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 22:37 |
|
DateTime
|
|||
---|---|---|---|
#18+
Pallaris, я вам вдогонку, что бы не расстраивать ) Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2014, 22:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVosttjohn2007Тогда по другому, зачем структуры делать неизменяемыми? чтоб их нельзя было изменять. например, из параллельного потока. и вообще, даже изменяемые структуры не такие уж изменяемые: Как то? Не понял. Как изменяемую структуру изменить из другого потока и как неизменяемая структура от этого защищает? hVostt Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
что увидем на экране? Это о чем говорит? A - это какая структура, изменяемая или нет или о чем пример? )) Не компилится и понятно почему. Это все равно что написать var random = new Random(); random.Next = 3; ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 00:44 |
|
DateTime
|
|||
---|---|---|---|
#18+
Имел ввиду: var random = new Random(); random.Next() = 3; ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 00:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
PallarisБлин о чем тема - что структура это не ссылочный тип, или что структура не может отнаследоваться от структуры? Или что? Тема о том, зачем изменяемые структуры делать неизменяемыми. Например, зачем делать неизменяемым класс - понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 01:02 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007, это говорит, что структуры передаются по значению как объявлен лист Код: c# 1.
как реализован индексатор IList<T> Код: c# 1. 2. 3. 4. 5. 6.
вот и выплюнул нам он значение, на наш запрос.. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 01:06 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, я знаю, что они передаются по значению, по этому и не понял, зачем random.Next() = 3 делать я спросил, как это к теме топика относится? В c# есть структуры изменяемые. Можно (некоторые уже) сделать структуру неизменяемой (int, decimal, DateTime). Есть классы изменяемые, можно сделать класс неизменяемым (string), неизменяемый класс понятно зачем. Зачем структуру делать неизменяемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 01:13 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, кстати, индексатор IList<T> вполне возвращает структуры изменяемого типа, другое дело, что их изменить нельзя. вопрос не про неизменяемые экземпляры, а про неизменяемые типы ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 01:23 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, совсем не о том вопрос вопрос не про структурные поля readonly и не про то, что при a = b (обе структуры) создастся копия структуры b и a станет копией структуры b Я извиняюсь, если вопрос не понятно задаю. вот смотрите: struct a { public int x; } a - структура изменяемого типа struct b { private int x; public int X {get {return x; } } public b(int _x) { x = _x; } } b - структура неизменяемого типа Зачем нужны структуры неизменяемого типа? В частности, почему int32, decimal, DateTime сделаны неизменяемыми? Почему бы не сделать, например var i = 0; i.Value = 7; ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 01:42 |
|
DateTime
|
|||
---|---|---|---|
#18+
Или по проще пример, почему бы не сделать типа: var d = new DateTime(2004, 12, 1); d.AddYear(1); нет, DateTime неизменяемый тип ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 01:59 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Или по проще пример, почему бы не сделать типа: var d = new DateTime(2004, 12, 1); d.AddYear(1); нет, DateTime неизменяемый тип изменяемый DateTime = много лишних и ненужных проблем, связанных в том числе с многопоточностью. для неизменяемых типов компилятор может генерировать более оптимальный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 06:00 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007, есть такая замечательная штука под названием "гугл". Поиск по "C# why structs immutable", по самой первой ссылке выдачи - ответ Липперта: http://stackoverflow.com/questions/3751911/why-are-c-sharp-structs-immutable/3753640#3753640 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 06:17 |
|
DateTime
|
|||
---|---|---|---|
#18+
cdtyjvНу это маразм. Обычный маразм. Так же они, например, сделали структурой Guid. Поэтому вы не можете, например, обнулить его. Вместо этого вам предлагается использовать default(Guid), который есть 000...000. Бред несусветный. Ну да ладно, таких перлов в .Net полно, не обращайте внимания. Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 07:12 |
|
DateTime
|
|||
---|---|---|---|
#18+
Алексей Кjohn2007И кто такой свеном? ))Это страшный человек. Лучше вообще не знать, что такие люди на земле есть. Я уже нескольких подобных пережил тут. Помнится, Ресерч Студия навел шухера в нашем садоводстве...... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 11:31 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVosttjohn2007Или по проще пример, почему бы не сделать типа: var d = new DateTime(2004, 12, 1); d.AddYear(1); нет, DateTime неизменяемый тип изменяемый DateTime = много лишних и ненужных проблем, связанных в том числе с многопоточностью. для неизменяемых типов компилятор может генерировать более оптимальный код. А какие проблемы у изменяемых структур с многопоточностью? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
b - структура неизменяемого типа Для b более оптимальный код сгенерируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 11:37 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007, вот у меня есть тип наружу торчит свойство только чтение, ( ДатеTime, Guid) когда объект этого типа будет таскаться по коду, я хочу быть уверенным, что та ничего не изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 11:47 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007А какие проблемы у изменяемых структур с многопоточностью? с тем, что один поток изменяет состояние структуры в то время, как другой поток считывает структуру, вы же помните, что структура передаётся по значению? что по-вашему здесь должно произойти: экземпляр нашей структуры: DateTime dt; поток 1 делает Код: c# 1.
в это же самое время поток 2 делает Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 12:27 |
|
DateTime
|
|||
---|---|---|---|
#18+
Сон Веры Павловныjohn2007, есть такая замечательная штука под названием "гугл". Поиск по "C# why structs immutable", по самой первой ссылке выдачи - ответ Липперта: http://stackoverflow.com/questions/3751911/why-are-c-sharp-structs-immutable/3753640#3753640 Ну, я почитал, конечно, только особо ничего существенного не нашел, вот и пришел за помощью - разобраться. В частности по приведенной ссылке для структур одна причина приведена, и то, какая-то сомнительная на мой взгляд, типа я забыл, что структуры передаются по значению, поэтому моя попытка изменения исходной структуры не получилась с таким же успехом можно сказать, что Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
я забыл, что при b = a; в b создается копия a, поэтому рассчитывал, что b будет синхронно меняться с a что-то тут не то! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 12:38 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVosttс тем, что один поток изменяет состояние структуры в то время, как другой поток считывает структуру, вы же помните, что структура передаётся по значению? Я совсем не понял примера. Какая проблема возникает, аналогичная моему посту выше, ту, что Eric Lippert описал? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 12:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
Вообще-то я одну причину придумал, зачем структуры делать неизменяемыми. Например, у нас есть огроменная структура, которую мы решили ради ускорения передать по ссылке в другой поток, и в целях защиты принимающий поток хочет чтобы структура была неизменяемая. Но зачем маленькие структуры типа DateTime делать неизменяемыми? не понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 12:51 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007, вообще то в поток стараются затолкнуть структуру по значению, что бы она там сдохла без кучи. DateTime описывает дату. В вашем типе вполне возможно - это дата вашего рождения, бракосочетания ( уж не буду финал трогать) И было бы не комфильно, таскаясь по жизни, если какой то м...к ее вот так просто возьмет и изменит. Хотя это делается композицией ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 13:01 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, Так а как он ее изменить, если она по значению и передается, или я не правильно понял что-то? А про твой пример readonly выше, мне нужно осмыслить сие. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 13:09 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Но зачем маленькие структуры типа DateTime делать неизменяемыми? не понятно ок, давайте подойдём с другой стороны. вы знаете как устроена структура DateTime? хранятся ли там число, месяц, год, часы, минуты, секунды отдельно? или там хранится большое число в виде миллисекунд от начала эпохи, а свойства типа Year возвращают извлечённый результат? не знаете. потому что вас это не должно волновать. точна также разрабочиков не должно волновать то, что вы хотите менять параметры у времени. для этого вы создаёте новую структуру, если хотите что-то изменить, эта операция очень быстрая. а теперь скажите пожалуйста, зачем вам потребовалось изменяемый DateTime? можете привести свою задачу, где это действительно нужно. а я в свою очередь постараюсь убедить вас, что это вам не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 13:12 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007Но зачем маленькие структуры типа DateTime делать неизменяемыми? не понятно А где критерий ее "маленькости" или "великости" - это субьективно. По смыслу - у даты есть только одно значение. Временная точка. В этом отношении дата ничем не отличается от целого числа. А функционал привязанный к структуре - для удобства отображения и простых операций, которые не могут быть сделаны простой арифметикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 13:43 |
|
DateTime
|
|||
---|---|---|---|
#18+
D129Алексей Кпропущено... Это страшный человек. Лучше вообще не знать, что такие люди на земле есть. Я уже нескольких подобных пережил тут. Помнится, Ресерч Студия навел шухера в нашем садоводстве...... :-) а где он сейчас? Стебелек не он пишет? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 14:35 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVostt, я не обязательно хочу менять параметры напрямую, ведь в изменяемом варианте может быть специальный регламентированный метод по типу AddYear или вообще Set(y,m,d) Создавать новую структуру при изменении все таки стоит времени, да и реализации тоже порой. Да и вообще в реальном коде это даже глупова-то будет выглядеть. Например у меня есть какой-то объект типа List, содержащий N элементов, кто-то хочет добавить элемент Add(Item) а я давай реализацию - new List, скопировал в него N элементов, добавил в него Item и вернул его как новый объект. Клева? )) Да, когда речь идет о классах (объектах), то о вреде изменяемых типов прежде всего говорят о потокобезопасности и вообще безопасности информации в потоках, т.е. 2 потока одновременно меняют один объект или один поток хакает другой, с задержкой меняя что-то в передаваемой объекте. Но структуры типа int, decimal, DateTime передаются как правило по значению (можно обеспечить прием по значению), по этому мультипоточных проблем у них не возникает. О всех остальных плюсах неизменяемости говорят как-то очень туманно, что сводится примерно к good practice Вот я и думаю, то что выделил жирным это разве good practice ? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 14:56 |
|
DateTime
|
|||
---|---|---|---|
#18+
D129, я имел ввиду, что одно дело передать по значению десяток байт, другое дело сотни байт или килобайт, для скорости лучше передавать по ссылке. Думаю, именно в связи с этим строки сделаны классом, а не структурой, чтобы быстро передавать и не ставить каждый раз ref ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 15:04 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007 Например у меня есть какой-то объект типа List, содержащий N элементов, кто-то хочет добавить элемент Add(Item) а я давай реализацию - new List, скопировал в него N элементов, добавил в него Item и вернул его как новый объект. Клева? )) см. ниже. john2007Создавать новую структуру при изменении все таки стоит времени, да и реализации тоже порой. Да и вообще в реальном коде это даже глупова-то будет выглядеть. нет, это очень-очень быстро. вряд ли прямое изменение свойств DateTime было бы быстрей. а на счёт глупо не глупо, я не вижу в чём глупо, это всего лишь синтаксис. john2007Но структуры типа int, decimal, DateTime передаются как правило по значению (можно обеспечить прием по значению), по этому мультипоточных проблем у них не возникает. вот именно, что по значению. структура хранит несколько полей. один поток копирует всё значение в то время, как другой поток меняет часть всего значения. т.е. проблемная ситуация. а проблебные ситуации лучше устранять. john2007Вот я и думаю, то что выделил жирным это разве good practice ? )) где-то иначе и быть не может. но сравнение не очень адекватное. List это класс, а про экземпляры классов (доступные по ссылке) мы сейчас вообще не говорим. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 15:41 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степиjohn2007, вот у меня есть тип наружу торчит свойство только чтение, ( ДатеTime, Guid) когда объект этого типа будет таскаться по коду, я хочу быть уверенным, что та ничего не изменилось. торчит не свойство, а поле ты хотел сказать как раз если его сделать свойством только на get то оно и не изменится никак, если речь про структуру, т.о. не обязательно структуру реализовывать неизменяемой в этих целях ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 15:42 |
|
DateTime
|
|||
---|---|---|---|
#18+
hVostt john2007Но структуры типа int, decimal, DateTime передаются как правило по значению (можно обеспечить прием по значению), по этому мультипоточных проблем у них не возникает. вот именно, что по значению. структура хранит несколько полей. один поток копирует всё значение в то время, как другой поток меняет часть всего значения. т.е. проблемная ситуация. а проблебные ситуации лучше устранять. поток не может копировать все значение структуры, пока другой поток его меняет при передаче структуры в другой поток создается ее копия и на это время выполнение первого потока естественно останавливается hVosttjohn2007Вот я и думаю, то что выделил жирным это разве good practice ? )) где-то иначе и быть не может. но сравнение не очень адекватное. List это класс, а про экземпляры классов (доступные по ссылке) мы сейчас вообще не говорим. Пусть List - это структура. Хотя и про объекты пишут, что неизменяемые объекты это тоже good practice ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 15:57 |
|
DateTime
|
|||
---|---|---|---|
#18+
D129Я уже нескольких подобных пережил тут. Помнится, Ресерч Студия навел шухера в нашем садоводстве...... :-) Мой любимый форумный тролль - грексайд. Жаль, куда то подевался. Троллил он знатно и по крупному, за словом в карман не лез. И, самое приятное, не опускался до явных оскорблений и закидываний грязью. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 16:02 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007D129, я имел ввиду, что одно дело передать по значению десяток байт, другое дело сотни байт или килобайт, для скорости лучше передавать по ссылке. Думаю, именно в связи с этим строки сделаны классом, а не структурой, чтобы быстро передавать и не ставить каждый раз ref Строки в дотнет могут быть до 2 мегабайт (не помню, могу ошибиться, никогда не загонял все в одну строку). Понятно, что это должен быть ссылочный тип - но и его подтянули к простым типам, сделав неизменяемым... А структура DateTime - хранит только то, что нужно. Не удивлюсь, если в формате double.... А всякие годы и дни - вычисляемые свойства. Так что при передаче по значению - никаких перегрузок скорее всего нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 16:08 |
|
DateTime
|
|||
---|---|---|---|
#18+
D129john2007D129, я имел ввиду, что одно дело передать по значению десяток байт, другое дело сотни байт или килобайт, для скорости лучше передавать по ссылке. Думаю, именно в связи с этим строки сделаны классом, а не структурой, чтобы быстро передавать и не ставить каждый раз ref Строки в дотнет могут быть до 2 мегабайт (не помню, могу ошибиться, никогда не загонял все в одну строку). Понятно, что это должен быть ссылочный тип - но и его подтянули к простым типам, сделав неизменяемым... А структура DateTime - хранит только то, что нужно. Не удивлюсь, если в формате double.... А всякие годы и дни - вычисляемые свойства. Так что при передаче по значению - никаких перегрузок скорее всего нет. И я про тоже, передавать по значению DateTime - проблем нет, поэтому и защита в виде неизменяемости DateTime не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 16:15 |
|
DateTime
|
|||
---|---|---|---|
#18+
[quot Arm79]D129Мой любимый форумный тролль - грексайд. Жаль, куда то подевался. Троллил он знатно и по крупному, за словом в карман не лез. И, самое приятное, не опускался до явных оскорблений и закидываний грязью. А тролли, они неизменяемые? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 16:21 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007А тролли, они неизменяемые? Неизменяемые. Они же из камня. Но форумный гарбадж коллектор все-таки их подбирает... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 16:24 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007поток не может копировать все значение структуры, пока другой поток его меняет при передаче структуры в другой поток создается ее копия и на это время выполнение первого потока естественно останавливается наивная простота john2007Хотя и про объекты пишут, что неизменяемые объекты это тоже good practice это для FP. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 16:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
john2007, Да дались Вам эти структуры, через год - полтора сосать будем с шарпом и что его окружает. Надо бы проверить сайт МСУ на предмет - родину любить, ничего уже святого - одно поклонение западу... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 17:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, ASP vNext опенсурсный, да и на Linux работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 18:46 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степиjohn2007, Да дались Вам эти структуры, через год - полтора сосать будем с шарпом и что его окружает. Надо бы проверить сайт МСУ на предмет - родину любить, ничего уже святого - одно поклонение западу... ну что за фигня, походу скоро будет все брать курсы джавы у свенома)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2014, 09:43 |
|
DateTime
|
|||
---|---|---|---|
#18+
netivanну что за фигня, походу скоро будет все брать курсы джавы у свенома)) а Java тип не омерикосовская поделко? Oracle же. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2014, 10:00 |
|
DateTime
|
|||
---|---|---|---|
#18+
netivan, дак и джаву в зародыше задавят ( запчасть от оракла), тут что то подумалось , откуда такое счастие подвалило , а потом вспомнил - как мой друг сиделец рассказывал как устраивают конкурсы Мисс зона... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2014, 10:19 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степи, не трожь Псаки! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2014, 10:26 |
|
DateTime
|
|||
---|---|---|---|
#18+
Где-то в степиnetivan, дак и джаву в зародыше задавят ( запчасть от оракла), тут что то подумалось , откуда такое счастие подвалило , а потом вспомнил - как мой друг сиделец рассказывал как устраивают конкурсы Мисс зона... оу. Приходи в арею, обсудим там :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2014, 10:45 |
|
DateTime
|
|||
---|---|---|---|
#18+
возвращаемся к вопросу... вот как надо делать правильно: http://www.php.net/manual/en/datetimeimmutable.modify.php ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2014, 04:48 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1402726]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 163ms |
0 / 0 |