Próbuję użyć cudzysłowów wewnątrz cudzysłowów. Działa wewnątrz pola tekstowego, ale nie tam, gdzie potrzebuję ciąg. Na przykład działa pierwszy wiersz kodu, ale ciąg musi być zmienną.
pictureBox1.Image = MediaLib.Get["chestarmor_105"];
ale kolejne 3 „nie”. Skończyło się na próbie użycia richTextBox1.Text jako zmiennej, ponieważ wydaje się tam dobrze bez powodzenia.
string chestArmor = "chestarmor_105";
richTextBox2.Text = """ + chestArmor + """;
pictureBox1.Image = MediaLib.Get[richTextBox2.Text];
Próbowałem wielu różnych odmian. Czego mi brakuje? Dzięki.
Odpowiedzi:
5 dla odpowiedzi № 1Podwójne cudzysłowy w pierwszym wierszu są artefaktem składniowym kompilatora umożliwiającym odróżnienie literału łańcuchowego od nazwy zmiennej. Nie ma ich w ciągu; ciąg jest chestarmor_105
, bez podwójnych cytatów.
Jeśli piszesz
pictureBox1.Image = MediaLib.Get[chestarmor_105]; // no quotes
kompilator tak pomyśli chestarmor_105
reprezentuje identyfikator; załączasz chestarmor_105
w podwójnych cudzysłowach, aby powiedzieć kompilatorowi, że tychcę używać tego dosłownie jako ciągu 14 znaków, a nie jako nazwy zmiennej. Następnie kompilator usuwa podwójne cudzysłowy i używa wartości jako łańcucha.
To powinno działać:
string chestArmor = "chestarmor_105";
richTextBox2.Text = chestArmor;
pictureBox1.Image = MediaLib.Get[richTextBox2.Text];