powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DateTime
25 сообщений из 68, страница 1 из 3
DateTime
    #38686026
john2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, зачем структуру DateTime сделали неизменяемой?
...
Рейтинг: 0 / 0
DateTime
    #38686044
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ушёл за попкорном
...
Рейтинг: 0 / 0
DateTime
    #38686063
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john2007Подскажите, зачем структуру DateTime сделали неизменяемой?

Код: c#
1.
2.
3.
4.
5.
var dateTime = new DateTime(2014, 2, 1);
dateTime.Day = 30;

var dateTime = new DateTime(2014, 1, 30);
dateTime.Month = 2;
...
Рейтинг: 0 / 0
DateTime
    #38686064
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилушёл за попкорном

а чито, хороший вопрос. ждём набросов свенома на бедную DateTime.

хотя орхитектура DateTime и правда напростительно ужасна.
...
Рейтинг: 0 / 0
DateTime
    #38686069
john2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttjohn2007Подскажите, зачем структуру DateTime сделали неизменяемой?

Код: c#
1.
2.
3.
4.
5.
var dateTime = new DateTime(2014, 2, 1);
dateTime.Day = 30;

var dateTime = new DateTime(2014, 1, 30);
dateTime.Month = 2;



А это что за код, о чем он?
...
Рейтинг: 0 / 0
DateTime
    #38686076
john2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttjohn2007Подскажите, зачем структуру DateTime сделали неизменяемой?

Код: c#
1.
2.
3.
4.
5.
var dateTime = new DateTime(2014, 2, 1);
dateTime.Day = 30;

var dateTime = new DateTime(2014, 1, 30);
dateTime.Month = 2;



А, я понял, кажется.

а в чем будет разница с
var dateTime = new DateTime(2014, 2, 30);
?

Ладно упрощу вопрос, зачем сделали структуру Int32 неизменяемой?
...
Рейтинг: 0 / 0
DateTime
    #38686083
john2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
john2007Ладно упрощу вопрос, зачем сделали структуру Int32 неизменяемой?

Слишком просто получилось и бессмысленно ))

Тогда по другому, зачем структуры делать неизменяемыми?

И кто такой свеном? ))
...
Рейтинг: 0 / 0
DateTime
    #38686095
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john2007И кто такой свеном? ))Это страшный человек. Лучше вообще не знать, что такие люди на земле есть.
...
Рейтинг: 0 / 0
DateTime
    #38686103
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john2007А, я понял, кажется.

а в чем будет разница с
var dateTime = new DateTime(2014, 2, 30);
?

ошибка будет. и dateTime нельзя будет воспользоваться. а что делать с существующим dateTime, над которым вздумали поиздеваться?
...
Рейтинг: 0 / 0
DateTime
    #38686105
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john2007Тогда по другому, зачем структуры делать неизменяемыми?

чтоб их нельзя было изменять. например, из параллельного потока. и вообще, даже изменяемые структуры не такие уж изменяемые:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct A {
   public int V1;
   public int V2;
}

var list = new List<A> { 
   new A { V1 = 1, V2 = 2 },
   new A { V1 = 2, V2 = 2 },
   new A { V1 = 3, V2 = 2 },
};

list[0].V1 = 5;

Console.WriteLine(list[0].V1);



что увидем на экране?
...
Рейтинг: 0 / 0
DateTime
    #38686139
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john2007,
или так
Код: c#
1.
2.
3.
4.
            A[] list = { new A { V1 = 1, V2 = 2 }};
            list[0].V1=1000000000;
            Console.WriteLine(list[0].V1);
            Console.Read();
...
Рейтинг: 0 / 0
DateTime
    #38686195
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиjohn2007,
или так
Код: c#
1.
2.
3.
4.
            A[] list = { new A { V1 = 1, V2 = 2 }};
            list[0].V1=1000000000;
            Console.WriteLine(list[0].V1);
            Console.Read();



Вывело 1000000000. А в случае с дженериком не компилится. Т.е. вызов list[0] у дженерика приводит к выполнению new A()?
...
Рейтинг: 0 / 0
DateTime
    #38686205
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,
авторТ.е. вызов list[0] у дженерика приводит к выполнению new A()?
получаем копию.
new A() - это не копия, это default(A)

Код: c#
1.
2.
3.
4.
5.
            var res1 = default(A);// new A();
            Console.WriteLine(res1.V1);
            var res2 = list[0];
            Console.WriteLine(res2.V1);
            Console.Read();
...
Рейтинг: 0 / 0
DateTime
    #38686215
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

А list[0] у массива почему копию не возвращает?
...
Рейтинг: 0 / 0
DateTime
    #38686218
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
john2007Подскажите, зачем структуру DateTime сделали неизменяемой?Ну это маразм. Обычный маразм. Так же они, например, сделали структурой Guid. Поэтому вы не можете, например, обнулить его. Вместо этого вам предлагается использовать default(Guid), который есть 000...000. Бред несусветный. Ну да ладно, таких перлов в .Net полно, не обращайте внимания.
...
Рейтинг: 0 / 0
DateTime
    #38686227
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,
Потому что это фишка оптимизатора компилятора, для массивов возвращается указатель на упаковку - тут же нет дженериков, но только вы приведете что вернулось к структуре, песня будет старой.
или с левой стороны поставите IList<A>
...
Рейтинг: 0 / 0
DateTime
    #38686231
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин о чем тема - что структура это не ссылочный тип, или что структура не может отнаследоваться от структуры? Или что?
...
Рейтинг: 0 / 0
DateTime
    #38686232
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttждём набросов свеномаА что Свеном теперь тут будет ошиваться?
Я думал, он облегчился и пошёл заниматься своими крутяцкими проектами.
...
Рейтинг: 0 / 0
DateTime
    #38686235
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

В мсдн пишут что для дженерика list[0] вернет выражение (видимо, new a { v1=1, v2=2 }). Оно что, все время так будет работать при любом обращении к list[0]? Или я что-то не так понял?
...
Рейтинг: 0 / 0
DateTime
    #38686241
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,
Я что те вразумлю вас что значит для всех и всегда? ну и для второго будет list[1].V1=100 некомпильно..
ну наверное будет всегда, пока в следующих версиях не исправят ( исправили же захват локальных в анонимах)по просьбе трудящихся, хотя Э.Л. писал что исправили по причине - так как заебся давать объяснения..
...
Рейтинг: 0 / 0
DateTime
    #38686250
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Так может и фиксить не надо, я не знаю. Я не шарю, как оно работает, поэтому и задаю вопросы. Получается при любом обращении к дженерику для структуры будет создаваться новый объект (где, в куче?) -я правильно понимаю? А list<A> list = new list<A> { new a ()} просто говорит, что enumeraor, когда к нему обратятся, должен вернуть new a(), но на этапе объявления дженерика ничего не создается? Так?
...
Рейтинг: 0 / 0
DateTime
    #38686264
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,
у вас какая то куча.
< когда к нему обратятся, должен вернуть new a()> копию
зачем ее запаковывать и распаковывать
<но на этапе объявления дженерика ничего не создается? > создается объект внутренним массивом
вообще по list<A> list = new list<A> { new a ()} можно еще один топик создать
Мы так можем до бесконечности раскручивать стек вопросов и ответов, структуры это очень хитрые и своенравные типы
я понимаю что не хватает знаний ( это не порок, если вы их ищите), надо наверно обратиться к сети, почитать блог Эрика Липперта
есть частичный перевод, он как бы объясняет подробно все плюшки с точки зрения компилятора и логики ( почему так а не так).
в теме поста это абсурдно обсуждать.
зы автор Guid. Поэтому вы не можете, например, обнулить его. Вместо этого вам предлагается использовать default(Guid),
Guid.Empty
зачем его обнулять? мы сами будем его генерить? дааа, трудно быть богом....
...
Рейтинг: 0 / 0
DateTime
    #38686267
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,
я вам вдогонку, что бы не расстраивать )
Код: c#
1.
2.
  var song = new {s = new A {V1 = 1, V2 = 2}};
  song.s.V1 = 100;
...
Рейтинг: 0 / 0
DateTime
    #38686314
john2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttjohn2007Тогда по другому, зачем структуры делать неизменяемыми?
чтоб их нельзя было изменять. например, из параллельного потока. и вообще, даже изменяемые структуры не такие уж изменяемые:


Как то? Не понял. Как изменяемую структуру изменить из другого потока и как неизменяемая структура от этого защищает?

hVostt
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct A {
   public int V1;
   public int V2;
}

var list = new List<A> { 
   new A { V1 = 1, V2 = 2 },
   new A { V1 = 2, V2 = 2 },
   new A { V1 = 3, V2 = 2 },
};

list[0].V1 = 5;

Console.WriteLine(list[0].V1);



что увидем на экране?

Это о чем говорит? A - это какая структура, изменяемая или нет или о чем пример? ))
Не компилится и понятно почему. Это все равно что написать
var random = new Random();
random.Next = 3;
...
Рейтинг: 0 / 0
DateTime
    #38686315
john2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имел ввиду:
var random = new Random();
random.Next() = 3;
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DateTime
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]