Czytam sobie Wasz artykuł, ten oto:
http://4programmers.net/C_sharp/Artyku%C5%82y/Garbage_Collector
Konkretnie:
Przykład z objaśnieniem:
StringBuilder a=new StringBuilder(); //1
StringBuilder b=new StringBuilder(); //2
a=b; // 3
b=null; //4
Cóż zatem się stało? Na początku istniały 2 obiekty z referencjami do nich, a w ostateczności zmieniliśmy referencję dla obiektu 'a', a usunęliśmy dla 'b'. Cóż zatem z rzeczywistym obiektem 'a', który dalej jest na stercie? A więc: nie mamy żadnej sposobności aby odwołać się do obiektu 'a' (wszystkie referencje do niego zostały usunięte). O takim obiekcie mówi się, że jest martwy. Zajmuje tylko niepotrzebną pamięć sterty, która jest marnowana.
Postanowiłem sprawdzić na szybko, moja aplikacja konsolowa wyświetla mi "kocie" w konsoli, ponizej kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace tescik
{
class Program
{
static void Main(string[] args)
{
var a = new StringBuilder("hej");
var b = new StringBuilder("kocie");
a = b;
b = null;
Console.WriteLine(a);
Console.ReadLine();
}
}
}
Nie rozumiem tego, wg mnie to, że wyświetla mi się "kocie" w konsoli, wynika z faktu, że do zmiennej a została przepisana zawartość zmiennej b. A z artykułu o ile dobrze to rozumiem wynika, że nie powinienem po operacji b=null mieć dostępu do obiektu a?