Die Frage ist etwas verwirrend. Definieren wir einige Begriffe:
Ein konstanter Ausdruck ist (grob gesagt) ein Ausdruck, von dem der Compiler weiß, dass er ein bestimmter konstanter Wert ist.
Ein Literal ist eine bestimmte Art von konstantem Ausdruck; 123und Math.PIsind beide konstante Ausdrücke. Ersteres ist wörtlich, letzteres nicht.
Ein konstantes Feld ist ein Mitglied eines Typs, der mit einem konstanten Ausdruck initialisiert wird und dann an anderer Stelle als konstanter Ausdruck verwendet werden kann. Math.PIist ein Beispiel für ein konstantes Feld.
Eine lokale Konstante ist wie ein konstantes Feld, jedoch auf einen Block beschränkt. (So wie eine lokale Variable auf einen Block beschränkt ist.)
Konstantenfelder und lokale Konstanten müssen ihren Typ explizit angeben. Es gibt keine "var" -Form für Konstanten. (Schon die Idee lässt einen schaudern; ein "const var" ist offensichtlich ein Oxymoron.)
Lokale Variablen müssen ihren Typ nicht angeben. Der Typ kann aus dem Initialisierer abgeleitet werden. Eine solche lokale Variable wird als "implizit typisierte lokale Variable" bezeichnet.
Ihre Frage lautet also: "Gibt es eine Möglichkeit, einen konstanten Literalausdruck vom Typ short zu schreiben, mit dem eine implizit typisierte lokale Variable vom Typ short initialisiert werden kann?"
Nein, da ist kein. Sie können die lokale Variable explizit eingeben:
short s1 = 123;
Sie können eine lokale Konstante explizit eingeben:
const short s2 = 123;
Oder Sie können einen konstanten Ausdruck erstellen, der eine kurze Besetzung enthält:
var s3 = (short)123;
Oder Sie können eine lokale oder Feldkonstante festlegen und ihren Namen für den Initialisierer des implizit eingegebenen lokalen verwenden:
var s4 = s2;
Aber daran führt kein Weg vorbei. shortmuss irgendwo erscheinen , entweder in einem Feld oder einer lokalen Deklaration oder in der Besetzung.