Próbuję napisać krótki fragment, aby pokazać różnicę między typem niezmiennym a zmiennym. Czy ten kod wydaje się odpowiedni dla wszystkich?Niezmienny vs Mutable C#
class MutableTypeExample
{
private string _test; //members are not readonly
public string Test
{
get { return _test; }
set { _test = value; } //class is mutable because it can be modified after being created
}
public MutableTypeExample(string test)
{
_test = test;
}
public void MakeTestFoo()
{
this.Test = "FOO!";
}
}
class ImmutableTypeExample
{
private readonly string _test; //all members are readonly
public string Test
{
get { return _test; } //no set allowed
}
public ImmutableTypeExample(string test) //immutable means you can only set members in the consutrctor. Once the object is instantiated it cannot be altered
{
_test = test;
}
public ImmutableTypeExample MakeTestFoo()
{
//this.Test = "FOO!"; //not allowed because it is readonly
return new ImmutableTypeExample("FOO!");
}
}
To nie jest klasa, która jest zmienna, ale pole. Możesz mieszać pola 'readonly' i 'normal' w klasie, o ile pola' readonly' są przypisywane tylko w kodzie konstruktora lub w czasie inicjalizacji. – Matten
'ImmutableTypeExample MakeTestFoo()' nie ma większego sensu. Czy ma być statyczny? –