Zwracany atrybut o typie string

0

Czy getter w C# zwraca wartość atrybutu czy referencję do tego atrybutu?

Czy mogę użyć poniższej metody aby zapisać wartość "Sample String" w innej zmiennej, która będzie przechowywała wartość, a nie referencję?

public class Sample
{
	private string sampleString = "Sample String";

	public string GetSampleString()
	{
		return sampleString;
	}
}

2

Zacznijmy od tego, że stringi w C# są niemutowalne.
Jeszcze raz: stringi w C# są niemutowalne.
To znaczy, po utworzeniu już niezmienne.

Jeśli zrobisz

string someString = sample.GetSampleString();
someString = "Ala ma kota";

to sobie po prostu przypisałeś nowy string do zmiennej someString, a cokolwiek zwróciło GetSampleString poszło w zapomnienie. I tyle...

Ale twój kod nie bardzo ceszarpowy jest.

public class Sample
{
    public string SampleString { get; private set; } = "Sample String";
}
0
szalony napisał(a):

Czy getter w C# zwraca wartość atrybutu czy referencję do tego atrybutu?

W swoim kodzie nie masz ani gettera ani atrybutu. A to, co jest zwracane w C# zależy od typu tego obiektu, a nie od składni użytej do zwracania. Typy wartościowe zostaną zwrócone przez wartość, a referencyjne przez referencje.

0

@Azarien
Dziękuję za objaśnienie.

@somekind
W takim razie czym jest ów string w klasie? Myślę, że jest to składowa klasy inaczej mówiąc atrybut klasy, zmienna klasy. Nie znam się :(

0

To jest pole.
Atrybuty to coś zupełnie innego - takie klasy, których można użyć do udekorowania czegoś w kodzie, aby dostarczyć dodatkowe metadane: https://www.dotnetperls.com/attribute

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