Nasıl yapılır: Salt Okunur Freezable'ın Yazılabilir Kopyasını Edinme

Bu örnekte, salt okunur Clone bir kopyasının yazılabilir bir kopyasını oluşturmak için yönteminin nasıl olduğu Freezable gösterir.

Bir nesne Freezable salt okunur ("donmuş") olarak işaretlendikten sonra nesneyi değiştiremezsiniz. Ancak, donmuş nesnenin Clone değiştirilebilir bir kopyasını oluşturmak için yöntemini kullanabilirsiniz.

Örnek

Aşağıdaki örnek, donmuş bir nesnenin değiştirilebilir bir kopyasını SolidColorBrush oluşturur.

Button myButton = new Button();
SolidColorBrush myBrush = new SolidColorBrush(Colors.Yellow);

// Freezing a Freezable before it provides
// performance improvements if you don't
// intend on modifying it.
if (myBrush.CanFreeze)
{
    // Makes the brush unmodifiable.
    myBrush.Freeze();
}

myButton.Background = myBrush;

// If you need to modify a frozen brush,
// the Clone method can be used to
// create a modifiable copy.
SolidColorBrush myBrushClone = myBrush.Clone();

// Changing myBrushClone does not change
// the color of myButton, because its
// background is still set by myBrush.
myBrushClone.Color = Colors.Red;

// Replacing myBrush with myBrushClone
// makes the button change to red.
myButton.Background = myBrushClone;
Dim myButton As New Button()
Dim myBrush As New SolidColorBrush(Colors.Yellow)

' Freezing a Freezable before it provides
' performance improvements if you don't
' intend on modifying it. 
If myBrush.CanFreeze Then
    ' Makes the brush unmodifiable.
    myBrush.Freeze()
End If


myButton.Background = myBrush

' If you need to modify a frozen brush,
' the Clone method can be used to
' create a modifiable copy.
Dim myBrushClone As SolidColorBrush = myBrush.Clone()

' Changing myBrushClone does not change
' the color of myButton, because its
' background is still set by myBrush.
myBrushClone.Color = Colors.Red

' Replacing myBrush with myBrushClone
' makes the button change to red.
myButton.Background = myBrushClone

Nesneler hakkında daha fazla Freezable bilgi için bkz. Freezable.

Ayrıca bkz.