Wpis z mikrobloga

Mam zadeklarowane pole w klasie z wartością domyślną.
Dlaczego używając poniższego zapisu nie przypisze nowej wartości?

Int32.TryParse(Console.ReadLine(), out int temp);
Chodzi mi o drugi parametr TryParse. Bez int działa. Wytłumaczy ktoś łopatologicznie?

#naukaprogramowania #csharp
  • 9
wiem właśnie, tylko się zastanawiam dlaczego nie działa tak jak powinno przy pierwszym zapisie


@grap32: sory, nie doczytałem Twojego pytania LOL :) W sumie nie wiem :) Albo zawsze używam ze zmienną, albo inline. Ty zrobiłeś zupełnie bez sensu... i mówisz, że temp jest nieprzypisany? Ogólnie musze to sprawdzić bo aż mi się wierzyć nie chce.
@grap32: Ale co chcesz osiągnąć? Bo rozumiem, że chcesz sprawdzić czy input z konsoli to int?

Jeśli piszesz w c# < 7 to Twoja wersja nie zadziała bo out musi być już zainicjowany przed jego podaniem:

int temp;
Int.TryParse(Console.ReadLine(), out temp)

to już Ci powinno zadziałać.

Dopiero od C# 7 wprowadzili takie cuda w TryParse, gdzie w sumie nawet nie musisz nic deklarować a nawet nie musisz nawet jawnie podawać typu
@grap32: Nie ma opcji by zadziałało bez 'int' lub 'var' jeżeli nie ma tempa gdzieś wyżej zadeklarowanego.

A odpowiedzią jest to, że out int temp lub 'out var temp` to deklaracje nowej zmiennej.
Jeżeli jest wyżej zadeklarowana to nie możesz jej zadeklarować ponownie.
Chodzi mi o drugi parametr TryParse. Bez int działa. Wytłumaczy ktoś łopatologicznie?


@grap32: Musisz mieć jakąś literówkę. U mnie działa ( ͡º ͜ʖ͡º) aż musiałem sprawdzić. Wklej cały kod.
@grap32: Kolega @IlIlIlllIIl mnie ubiegł. Twój kod niczym nie różnił się od czegoś takiego:

public int temp_2;

public Program()
{
Int32.TryParse(Console.ReadLine(), out int temp);
}
public void show()
{
Console.Write(temp_2);
}

Drukowałeś nie tą wartość, którą wydawało Ci się, że drukujesz :)