Vilka är egentligen riktlinjerna för när man skall sätta en metod som shared egentligen? Oftast faller det sig naturligt om man skall göra det eller inte, men ibland är det mer tveksamt. Jag har vagt för mig att jag läst att shared methods har en prestandaförlust p g a att extra säkerhetskontroller körs i frameworket, men kan inte hitta källan nu.Någon som kan bringa lite ljus i mörkret?
shared/static methods
6 svar · 432 visningar · startad av clarkbones
Jag har fått lära mig att när en metod inte kräver något av klassens tillstånd är det lämpligt att använda static (antar att shared är VBs motsvarighet till static i c#). Det är vad jag utgår efter och hitills har det fungerat bra, dock har jag för mig att det är en viss prestanda förlust. Någon annan kanske kan ge oss mer ljus (har också funderar på detta ett tag)
Så lite som möjligt ska vara statiskt, eftersom det oftast (men inte alltid) är ett mindre objektorienterat sätt att lösa saker på. Men hur som helst ska du inte bry dig om prestanda när du väljer statisk/inte statisk metod, om inte annat för att du förmodligen har grava designproblem om du har så många anrop av statiska metoder att det blir ett problem. Undantag finns iofs i drivor, men det spelar ingen roll.
Egentligen är statiska metoder mest ett hack för att komma runt att vissa språk inte har stöd för fristående funktioner...
Ska du jobba med någon typ av trådning så blir det problem med statiska funktioner
På vilket vis då? Det finns inget som hindrar en från att göra trådsäkra statiska metoder.
På vilket vis då? Det finns inget som hindrar en från att göra trådsäkra statiska metoder.
Du har såklart rätt. Det handlar om att om man har data som delas och uppdateras samtidigt så blir det problem. har som du påpekar egentligen inget att göra med om man har statiska metoder eller inte.
Lösningen är då att låsa den kritiska sektionen med en mutex eller ett lock. :)
spango skrev:
På vilket vis då? Det finns inget som hindrar en från att göra trådsäkra statiska metoder.
Hört talas om inkompetens? Kan vara ett stort hinder! ;)
Tack för intressanta svar!