wyszukiwania Effort:Jak utworzyć niestandardową składnię do opisu obiektu w języku C#?
- Google:
- Stackoverflow:
I trochę więcej nie pamiętam ...
zajściem w ciążę: Każdego "wbudowany typ" w C# (takich jak int
, float
, char
itp.) Jest klasą, a każda klasa w języku C# dziedziczy z klasy Object
. Dlatego każdy "wbudowany typ" dziedziczy po klasie Object
.
Biorąc pod uwagę to założenie, zakładam, że aby ustawić zmienną double
, muszę ustawić pewne właściwości, używając "normalnej" składni. Oto co mam na myśli:
double number = new double();
number.leftSide= 5;
number.rightSide = 23;
Console.Write(number);
// Output:
// 5.23
Ale C# ma specjalną, równoważne składni dla tworzenia zmiennej double
(w taki sposób, że będzie robić to, co ja próbował zrobić powyżej, nie że powyższy kod będzie faktycznie praca):
double number = 5.23;
kompilator rozumie że zmiennoprzecinkowe oddziela liczbę do dwóch: 5 i 23.
Moje pytanie brzmi, czy mogę zrobić t to samo z moimi własnymi klasami. Na przykład, jeśli mam własną klasę Time
(i jest to tylko przykład, więc nie sugeruj używania wbudowanych klas czasu), chciałbym mieć opcję utworzenia instancji w ten sposób:
Time time = 10:25;
Kompilator zrozumie, że dwukropek oddziela liczbę na godziny i minuty (co, jak przypuszczam, wymaga utworzenia w klasie Time
).
Słyszałem o Roslyn CTP, ale szukam prostszego, wbudowanego sposobu robienia tego, co opisałem.
Czy mogę to zrobić?
ogólna zasada jest kilka języków (Groovy) to operator zmuszając, Twój fragment może być przedstawiony (całkowita 10) (operator:) (integer 25) - ale Myślę, że ":" jest niemożliwe w C# –
cont .. 5.23 jest na poziomie leksykalnym, jeden poziom poniżej parsera. –