• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja Evaluate w C#

Object Storage Arubacloud
+1 głos
298 wizyt
pytanie zadane 19 października 2020 w C# przez Comparion Obywatel (1,810 p.)

Witam chciałbym lepiej zrozumieć podaną funkcję która ma na celu obliczenie wartości podanych od użytkownika jako string:

public static double Evaluate(string expression)  
       {  
           System.Data.DataTable table = new System.Data.DataTable();  
           table.Columns.Add("expression", string.Empty.GetType(), expression);  
           System.Data.DataRow row = table.NewRow();  
           table.Rows.Add(row);  
           return double.Parse((string)row["expression"]);  
       }
Console.WriteLine(Evaluate("9 + 5 * 2 - 2"));

Jak to dokładniej działa? najpierw tworzymy sobie tabele, potem kolumnę, jako drugi parametr podajemy string.Empty.GetType() i tutaj już dla mnie zaczynają się schody, no bo co to oznacza? string.Empty to pusty ciag znaków i na dodatek GetType? w miejscu gdzie mamy podać jaki chcemy mieli typ kolumny?! brzmi dla mnie mnie trochę nie logicznie. W ostatnim argumencie podajemy nasz string, gdzieś przeczytałem że tam wykona się po prostu nasze działanie ( obliczy naszą wartość) ale też nie do końca rozumiem jak? zostanie to zapisane do jednego okienka a jakaś funkcja w środku rozróżni operatory od liczb i wykona działanie? Następnie tworzymy nowy wiersz, jak rozumiem jest on niezbędny, ale w nim nic nie jest zapisywane??

 

komentarz 19 października 2020 przez VBService Ekspert (252,740 p.)

string.Empty to pusty ciag znaków i na dodatek GetType? w miejscu gdzie mamy podać jaki chcemy mieli typ kolumny?! brzmi dla mnie mnie trochę nie logicznie.

masz rację, wystarczy samo: typeof(String)string.Empty.GetType() - według Mnie: "masło - maślane" wink

komentarz 19 października 2020 przez Comparion Obywatel (1,810 p.)
https://stackoverflow.com/questions/6052640/is-there-an-eval-function-in-c niby niżej jest łatwiejsza wersja, ona jest może i prostsza do zrozumienia, ale tak czy siak fajnie byłoby rozumieć ten kod

1 odpowiedź

+1 głos
odpowiedź 19 października 2020 przez VBService Ekspert (252,740 p.)
wybrane 19 października 2020 przez Comparion
 
Najlepsza

string.Empty to pusty ciag znaków i na dodatek GetType? w miejscu gdzie mamy podać jaki chcemy mieli typ kolumny?! brzmi dla mnie mnie trochę nie logicznie.

masz rację, wystarczy samo: typeof(String)string.Empty.GetType() - według Mnie: "masło - maślane" wink

W ostatnim argumencie podajemy nasz string, gdzieś przeczytałem że tam wykona się po prostu nasze działanie ( obliczy naszą wartość) ale też nie do końca rozumiem jak? zostanie to zapisane do jednego okienka a jakaś funkcja w środku rozróżni operatory od liczb i wykona działanie?

zadziała podobny mechanizm jak w: eval - php,  eval() - javascript,  Eval() -vbscript .

Następnie tworzymy nowy wiersz, jak rozumiem jest on niezbędny, ale w nim nic nie jest zapisywane??

nie musi być jawnie przypisywane - domyślnie "ląduje" tam wynik z expression

        public static double Evaluate(string expression)
        {
            System.Data.DataTable table = new System.Data.DataTable();
            
            System.Data.DataRow row = table.NewRow();
            table.Rows.Add(row);
            
            table.Columns.Add("expression", typeof(String), expression);
            //System.Data.DataRow row = table.NewRow();
            //table.Rows.Add(row);
            
            // w momencie wywołania tej linii, tworzona jest cała struktura 
            // tabeli, wykonywane jest działanie i wrzucane jest do row
            return double.Parse((string)row["expression"]);
        }

 

Podobne pytania

+1 głos
1 odpowiedź 1,068 wizyt
pytanie zadane 17 czerwca 2016 w C# przez programer Obywatel (1,190 p.)
0 głosów
1 odpowiedź 142 wizyt
pytanie zadane 7 kwietnia 2019 w C# przez WojMen Początkujący (330 p.)
0 głosów
1 odpowiedź 210 wizyt
pytanie zadane 16 czerwca 2021 w C# przez Bartek12 Mądrala (5,510 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...