string i operator +

0

Witam.
Mam problem ze stringiem i juz od kilku dni szukam rozwiazania.
prubuje powiazac kilka rzeczy w jednym stringu lecz wywala mi blad (Nie można zastosować operatora "+" do argumentów operacji typu "string" lub "grupa metod")

string lokalizacja = @"C:\Data\" + GetData + ".dat";

ktos ma jakis pomysl jak to moge rozwiacac
wiem ze to moze dla niektorych moze jest proste ale ja jestem poczatkujacy w tych sprawach wiec prosze o wyrozumialosc

1

Jak masz @-quoted string to muszą ci się zgadzać otwarte i zamknięte cudzysłowy. Może po prostu to wyeskejpuj, jakoś tak:
string lokalizacja = "C:\\Data\\" + GetData + ".dat";

1
PSYCHOdav napisał(a):

Witam.
Mam problem ze stringiem i juz od kilku dni szukam rozwiazania.
prubuje powiazac kilka rzeczy w jednym stringu lecz wywala mi blad (Nie można zastosować operatora "+" do argumentów operacji typu "string" lub "grupa metod")

string lokalizacja = @"C:\Data\" + GetData + ".dat";

ktos ma jakis pomysl jak to moge rozwiacac
wiem ze to moze dla niektorych moze jest proste ale ja jestem poczatkujacy w tych sprawach wiec prosze o wyrozumialosc

Za mało informacji. Czym jest GetData? To jest metoda? Jeżeli tak i metoda ma coś zwracać do tego stringa, powinieneś raczej napisać GetData() zamiast GetData.
Daj więcej kodu, opisz problem dokładniej.

0

Tak jest to metoda ktora zwraca mi wczesniej pobrana Date z DataPickera. wiec teraz mam nowy problem bo nie moge uzyc niestatycznej metody.

public void ClickOn(object sender, RoutedEventArgs e)
        {
            Data = InvDataBox.SelectedDate.Value.ToShortDateString();
            Sum = InvSumaBox.Text.ToString();
            this.Close();
        }

public string GetData()
        {
            return Data;
        }

string lokalizacja = @"C:\Data\" + GetData() + ".dat";
0

Zamiast operatora + lepiej skorzystać ze string.Format();

string lokalizacja = string.Format(@"C:\Data\{0}.dat", GetData());
PSYCHOdav napisał(a):

wiec teraz mam nowy problem bo nie moge uzyc niestatycznej metody.

Czy kod, który tu umieściłeś, tak samo wygląda w klasie? Tzn. czy "lokalizacja" jest deklarowana w ciele klasy?
Jeśli tak to zadeklaruj to jako property:

public string lokalizacja {
	get {
		return string.Format(@"C:\Data\{0}.dat", GetData());
	}
}

Wtedy dopiero w momencie użycia pola lokalizacja, wywoływana będzie metoda GetData().

2

Ja bym raczej przy ścieżkach używał

Path.Combine(...)
0

Ja bym jeszcze zaproponował System.IO.Path.Combine(String[]), może poratować w przypadku używania stringa jako ścieżki.

3
Spine napisał(a):

Zamiast operatora + lepiej skorzystać ze string.Format();

Zamiast string.Format lepiej interpolować: return $@"C:\Data\{{GetData()}}.dat";

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