109: (animated-1)
[personal profile] 109
у меня дофига статических generic классов, а также статических классов, в которых полно generic методов. под generic я имею в виду "имеющие type parameters" - ну вот это, с угловыми скобочками, you know. и использовать мне всё это очень удобно до тех пор, пока не возникает семейство - то есть, в традиционной миссионерской позиции надо было бы создать abstract parent class, засунуть туда общее, пронаследоваться, заимплементить специфику в потомках.

но, блядь, как известно, статический класс не может быть абстрактным, и от него нельзя пронаследоваться. не потому, что с абстрактными статическими классами есть какая-то логическая неувязка - нет, никакой неувязки нет в том, чтобы в родителе написать static protected abstract int GetNumber(), а в потомке - static protected override int GetNumber() { return 42; }. и использовать этот GetNumber() там в родителе, где живёт общая для всех потомков логика, использующая этот number. всё это отлично же резолвится во время компиляции, даже double dispatch не надо.

а потому что, блядь, создатели языка решили, что это будет слишком сложно для восприятия. та же причина, по которой у инстанса типа нельзя вызвать его статический метод. в object паскале можно, а тут, блядь, нельзя. monadic types с биндом, блядь, для них не слишком сложно, а это, блядь, слишком.

поэтому в таких случаях приходится писать обычные, не-статичеcкие классы, но без стейта, и заводить в клиентском классе статическое поле, чтобы не делать бессмысленное new каждый раз.

это, пожалуй, чуть ли не единственная претензия к сишарпу. ну и ещё ref/out параметры нельзя засовывать в лямбды. какого хрена? главное, что руками это "ограничение" обходится в три лишние строчки, но зачем меня заставлять эти три строчки каждый раз писать? да и не в писать дело, читать потом противно.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags