webForumDet fria alternativet

Kan ett objekt förstöra sig själv?

.NET

2 svar · 195 visningar · startad av neversleep

Medlem sedan okt. 2001230 inlägg
Frågan#1

Tjena

Kan ett objekt ha ihjäl sig själv? I konstruktorn i min klass har jag ett anrop som bygger upp objektet. Men om något går fel här så vill jag inte att objektet ska skapas. Hur åstadkommer jag det?

typ

sub new()
dim error as boolean = buildTheObjcect()
if error then
'skapa inte denna referens
end if
end sub

testade
GC.Collect(GC.GetGeneration(Me))
men det funkade ej utan new metoden retunerade fortfarande en referens till ett objekt. Antar att garbagecollectorn inte är så snabb.

Medlem sedan maj 2001329 inlägg
#2

Istället för att föstöra objektet kan du kasta en exception ifrån det. Därefter skapar du ett objektet om det ej blev en exception, medans du inte skapar det om det blev någe.

Exception skapar du i C# med:

throw new ApplicationException("Dont create this instance");

För att skapa objektet kan man göra så här i C#

try{
  myObject obj = new object();
    //det är nu skapat och vi kan göra grejer med det
  obj.Grejer();
}
catch(ApplicationException){
//objektet skapades ej och vi kan göra grejer utifrån detta
}

Sånånting..

Sen tar GC hand om att tabort den data som lades på stacken och objekt strukturen som lades på heapen (om det ej finns nått annat objekt som använder denna) när detta behövs. Detta sköts automatiskt och du ska ej behöva tänka på detta förrän du har ett väldigt stort objekt.

Medlem sedan okt. 2001230 inlägg
#3

Intressant och bra lösning. Tack så mycket!

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)