Operator $

GU
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:94
0

Witam,
Chciałbym się dowiedzieć co znaczy operator "$" w przykładzie:

Kopiuj
     Double wynik = p.Dodaj(a, b);
            Console.WriteLine($"wynik = {wynik}");
            Console.ReadLine();
edytowany 1x, ostatnio: guuren
FR
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 2 godziny
  • Postów:948
0

Bo możesz napisać
string platki = "platki"
string mlekiem = "mlekiem"
string x = "Jem sobie {0} z {1}", platki, mlekiem;

a mozesz dac dolara i wpisac to poza 0 i 1 co jest czytelniejsze (lub nie, zalezy co kto preferuje :)
czyli
string x = $"Jem sobie {platki} z {mlekiem}" gdzie platki/mlekiem to są pola.

GU
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:94
0
froziu napisał(a):

Bo możesz napisać
string platki = "platki"
string mlekiem = "mlekiem"
string x = "Jem sobie {0} z {1}", platki, mlekiem;

a mozesz dac dolara i wpisac to poza 0 i 1 co jest czytelniejsze (lub nie, zalezy co kto preferuje :)
czyli
string x = $"Jem sobie {platki} z {mlekiem}" gdzie platki/mlekiem to są pola.

Czyli z operatorem "$" mogę bezpośrednio używać nazw zmiennych?

FR
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 2 godziny
  • Postów:948
4

Dokładnie tak.

Może ten przykład będzie ciekawszy:
string one = "jeden"
string two = "dwa",
string three = "trzy",
string zdanie = $"Liczba {one}, wystepuje przed liczba {two}, a liczba {three} jest suma poprzednich dwoch liczb";

Edit.

Przy okazji jeżeli używasz visual studio to możesz sobie zobaczyć jak kolorowana jest składnia bez dolara a jak z.
Możesz sobie spróbować wypisać stringi z dolarem i bez.

edytowany 1x, ostatnio: froziu
GU
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:94
0
froziu napisał(a):

Dokładnie tak.

Może ten przykład będzie ciekawszy:
string one = "jeden"
string two = "dwa",
string three = "trzy",
string zdanie = $"Liczba {one}, wystepuje przed liczba {two}, a liczba {three} jest suma poprzednich dwoch liczb";

Bardzo dziękuję za odpowiedź. Ten przykład jest jeszcze lepszy.
Jeszcze raz bardzo dziękuję :)

Pozdrawiam

Riddle
Możesz rozważyć akceptację posta, który odpowiada na Twoje pytanie.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 dni
  • Lokalizacja:Wrocław
0
guuren napisał(a):

Witam,
Chciałbym się dowiedzieć co znaczy operator "$" w przykładzie:

Kopiuj
     Double wynik = p.Dodaj(a, b);
            Console.WriteLine($"wynik = {wynik}");
            Console.ReadLine();

To nie jest operator tylko znak specjalny oznaczający interpolowany string.

froziu napisał(a):

Bo możesz napisać
string platki = "platki"
string mlekiem = "mlekiem"
string x = "Jem sobie {0} z {1}", platki, mlekiem;

Raczej nie może. Tzn. może, ale to nie tylko nie zadziała, ale się nawet nie skompiluje.

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

string x = "Jem sobie {0} z {1}", platki, mlekiem;

@froziu: Miałeś zapewne na myśli string.Format.

edytowany 1x, ostatnio: grzesiek51114
FR
Zgadza się. Nie używam więc umknęło. Przepraszam za wprowadzenie w błąd.
0

a propos interpolacji za pomocą $ - ostatnio w pewnej lekturze przeczytałem, że użycie $ zabezpiecza program przed "wstrzykiwaniem" tekstu - ktoś mógłby rozwinąć o co chodzi ?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 dni
  • Lokalizacja:Wrocław
0

Lepiej o to chyba spytać autorów tamtego tekstu, albo chociaż podać źródło.

0

"Odświerzyłem" pamięć: dokładnie to chodzi o wstrzykiwanie kodu za pomocą łańcuchów znaków po kompilacj. /źródło: Mark Michaelis, Eric Lippert - C# 6.0. Kompletny przewodnik dla praktyków. Wydanie V strona 72.

WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 2 godziny
  • Postów:5132
0

o to chodzi?

Let’s start with what it is. String interpolation is a more convenient syntax for mixing string literals with expressions. It’s code embedded in a string literal. As such, it needs to be expressed in the scope where the expressions are going to make sense. For instance, the example above is a replacement for:

Kopiuj
var url = "http://weblogs.asp.net/" + blog + "/" + slug;

In the same way that you would never write this where “blog” and “slug” are not defined, you can’t write the string interpolation version either: the compiler will just scream at you.

That’s because the literal is parsed at compile-time, which also means that the string interpolation can’t be used on non-literal strings. That alone creates strong constraints on the scope of the feature.

In theory, you can use string interpolation every time you are feeding a literal string into String.Format, or concatenating literal strings and expressions. Such legitimate scenarios includes URL building like above (with sanitized or safe pedigree token values), and similar path building exercises where the format string is not English, but rather a technical kind of string.

https://weblogs.asp.net/bleroy/c-6-string-interpolation-is-not-a-templating-engine-and-it-s-not-the-new-string-format

0

hmmmm czyżby chodziło o to Michaelisowi i Lippertow (w C# 6.0. Kompletny przewodnik dla praktyków. Wydanie V ) ?? mam wątpliwość, tym bardziej, że dalej piszą, że za kulisami wywoływana jest metoda String.Format(), poza tym chodziło > o wstrzykiwanie kodu za pomocą łańcuchów znaków po kompilacj

0

żadnych pomysłów?

Azarien
pomysłów na co?
0
Mały Programista napisał(a):

żadnych pomysłów?

Na to o co chodzi z tym wstrzykiwaniem kodu....

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.