|
Наследование, struct
|
|||
---|---|---|---|
#18+
а почему в C# нет наследования структур? С уважением, Naf ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:14 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Naf, Потому что это не ссылочный тип у которого есть свои преимущества и свои недостатки. Из разряда вопросов почему нет наследования int? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:19 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
ITmonstrikNaf, Потому что это не ссылочный тип у которого есть свои преимущества и свои недостатки. Из разряда вопросов почему нет наследования int?Ага, но все же ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:27 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Было бы удобно в плане: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:34 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
NafБыло бы удобно в плане: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
чем для вас класс хуже? то что он ссылочный и располагается в куче? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:43 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
comphead чем для вас класс хуже? то что он ссылочный и располагается в куче? в классе будет: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:57 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
а так приходится писать имплицит/эксплицит операторы ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:59 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Nafа так приходится писать имплицит/эксплицит операторы реализуйте интерфейс IClonealbe ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:13 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
compheadреализуйте интерфейс IClonealbe Это ничего не решит ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:15 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
compheadNafа так приходится писать имплицит/эксплицит операторы реализуйте интерфейс IClonealbe надо кучу кода писать ручками, да и возвращает он object ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:17 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Nafcompheadреализуйте интерфейс IClonealbe Это ничего не решит может поподробнее расскажете о задаче. Код: plaintext 1. 2. 3.
a.X = 10; b.X = 11; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:18 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
compheadNafcompheadреализуйте интерфейс IClonealbe Это ничего не решит может поподробнее расскажете о задаче. Код: plaintext 1. 2. 3.
a.X = 10; b.X = 11; Clone() надо еще ручками реализовать, да и возвращает он object ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:20 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
NafcompheadNafcompheadреализуйте интерфейс IClonealbe Это ничего не решит может поподробнее расскажете о задаче. Код: plaintext 1. 2. 3.
a.X = 10; b.X = 11; Clone() надо еще ручками реализовать, да и возвращает он object разумеется. а в программировании все так. :) ручками реализовывать то. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:23 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
compheadNafcompheadNafcompheadреализуйте интерфейс IClonealbe Это ничего не решит может поподробнее расскажете о задаче. Код: plaintext 1. 2. 3.
a.X = 10; b.X = 11; Clone() надо еще ручками реализовать, да и возвращает он object разумеется. а в программировании все так. :) ручками реализовывать то. ) Хотелось бы по меньше такого кода ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 13:25 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
comphead, в "Framework Design Guidlines" можно прочесть следующие рекомендации: DO NOT implement ICloneable DO NOT use ICloneable in public APIs. см. блог от автора: http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx рекомендуется реализовать собственную логику клонирования, не используя интерфейс ICloneable. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 16:54 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Nafа почему в C# нет наследования структур? С уважением, Naf(неупакованная) структура не имеет ссылки на тип, поэтому в рантайме нельзя определить какого типа структура. т.к. структуры не наследуются, то компилятор всегда знает какой тип у конкретного экземпляра структуры ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 17:53 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Gluck_13comphead, в "Framework Design Guidlines" можно прочесть следующие рекомендации: DO NOT implement ICloneable DO NOT use ICloneable in public APIs. см. блог от автора: http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx рекомендуется реализовать собственную логику клонирования, не используя интерфейс ICloneable. да ну? и почему его нерекомендутся использовать? точнее чем бы ваша логика клонирования отличалась бы? переопределили метод Clone() а дальше ваша логика. так в чем смысл поста тогда? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 18:04 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
compheadда ну? и почему его нерекомендутся использовать? Я давал ссылку на блог одного из авторов "Framework Design Guidlines", где описано, почему не рекомендуется и как надо. Кратко - контракт интерфейса ICloneable не определяет способа копирования - глубокое или поверхностное. compheadточнее чем бы ваша логика клонирования отличалась бы? Тем, что была бы определенной :) compheadтак в чем смысл поста тогда? Удержать топикстартера от сомнительных архитектурных решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 07:44 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Gluck_13compheadда ну? и почему его нерекомендутся использовать? Я давал ссылку на блог одного из авторов "Framework Design Guidlines", где описано, почему не рекомендуется и как надо. Кратко - контракт интерфейса ICloneable не определяет способа копирования - глубокое или поверхностное. compheadточнее чем бы ваша логика клонирования отличалась бы? Тем, что была бы определенной :) compheadтак в чем смысл поста тогда? Удержать топикстартера от сомнительных архитектурных решений. у вас есть пустая реализация метода. хотите в нем реализуйте shallow copy хотите deep. или вы не совсем разобрались. для именно той задачи, что хочет автор я пока путей кроме клонирования/копирования не вижу. если вы видите, предложите. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 10:15 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
А как реализовать общую функциональность для структур, если без наследования? Скажем, есть метод, который переводит любую структуру в массив байт через вызов метода Serialize этой структуры. Ну и плюс добавляет некоторые данные к этому массиву байт (код добавления этих данных всегда одинаковый и не зависит от типа входящей структуры). Ну и выдаёт массив байт в качестве возврата. Налицо одинаковая функциональность - как обобщить эту функциональность на все структуры, которые я хочу таким образом преобразовывать (т. е. на все структуры, которые могут приходить на вход вышеописанного метода)? Можно сделать перегрузки для каждого типа структур. Но тогда нужно будет копировать весь код в этих методах, и код одинаковым. И ещё дополнительный вопрос. Почему в дотнете часто втречаются "семейства" методов вида GetBytes(int x) GetBytes(long x) GetBytes(short x) GetBytes(uint x) GetBytes(ulong x) GetBytes(ushort x) и т. п., вместо одного GetBytes<T>(T x) ? Не связано ли это с отсутствием наследования структур? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 13:38 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
Может, переделать структуру в класс? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 13:39 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
user7320, раз речь о общем методе Serialize(), то сделай интерфейс с ним, добавь его ко всем структурам и напиши обобщенный метод с ограничением where T : struct, IMySerializable. user7320Почему в дотнете часто втречаются "семейства" методов вида Для обеспечения типовой безопасности (type safety) без изменений типов для которых эти методы предназначены. Также возможно что они были созданы в .NET 1.x когда обобщения еще не поддерживались. user7320Может, переделать структуру в класс? Структуру следует использовать для небольших значений с семантикой передачи по значению. Только тебе известно что нужно получить. Вот и решай. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:22 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
bazileuser7320, раз речь о общем методе Serialize(), то сделай интерфейс с ним, добавь его ко всем структурам и напиши обобщенный метод с ограничением where T : struct, IMySerializable. Под методом Serialize я имел ввиду статический метод - удобно вызывать эти методы (ещё и Deserialize есть) как статические. Тогда интерфейс не подойдёт. И класс не подойдёт - нельзя сделать статические методы абстрактными или виртуальными. Похоже, надо выносить эту логику в отдельный класс-хелпер. Как вы думаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:40 |
|
Наследование, struct
|
|||
---|---|---|---|
#18+
user7320И класс не подойдёт - нельзя сделать статические методы абстрактными или виртуальными. Я имею ввиду, как базовый класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2014, 14:40 |
|
|
start [/forum/topic.php?fid=20&fpage=106&tid=1402385]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 361ms |
total: | 547ms |
0 / 0 |