Operator $

0

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

     Double wynik = p.Dodaj(a, b);
            Console.WriteLine($"wynik = {wynik}");
            Console.ReadLine();
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.

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?

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.

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

0
guuren napisał(a):

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

     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.

0

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

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

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 ?

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.

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:

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?

0
Mały Programista napisał(a):

żadnych pomysłów?

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1