Why C# is not allowing non-member functions like C++
C # nie pozwoli na pisanie funkcji niebędących członkami, a każda metoda powinna być częścią klasy. Myślałem o tym jako o ograniczeniu we wszystkich językach CLI. Ale myliłem się i odkryłem, że C ++ / CLI obsługuje funkcje nie będące członkami. Po skompilowaniu kompilator uczyni tę metodę członkiem jakiejś nienazwanej klasy.
Oto, co mówi standard C ++ / CLI,
[Uwaga: Funkcje niebędące członkami są traktowane przez CLI jako członkowie jakiejś nienazwanej klasy; jednak w kodzie źródłowym C ++ / CLI takich funkcji nie można jednoznacznie zakwalifikować za pomocą tej nazwy klasy. nota końcowa]
Kodowanie funkcji nie będących członkami w metadanych jest nieokreślone. [Uwaga: nie powoduje to problemów z interopem, ponieważ takie funkcje nie mogą mieć widoczności publicznej. nota końcowa]
Moje pytanie brzmi: dlaczego C # nie implementuje czegoś takiego? Czy może uważasz, że nie powinno być funkcji niebędących członkami, a każda metoda powinna należeć do jakiejś klasy?
Moim zdaniem mam wsparcie funkcji niezwiązanych z członkami i pomaga to uniknąć zanieczyszczania interfejsu klasy.
Jakieś pomysły..?