Middle
Lze řetězec použít jako objekt pro zámek v konstrukci lock?
sobes.tech AI
Odpověď od AI
Není doporučeno používat řetězec jako objekt pro zámek (lock) v C#. Ačkoliv je to technicky možné, řetězce v .NET jsou neměnné (immutable) a mohou být internovány, což znamená, že stejné literály řetězců mohou odkazovat na stejný objekt v paměti.
To přináší riziko, že různé části programu mohou náhodně použít stejný řetězec k zámku, což povede k nepředvídatelnému chování a problémům se synchronizací.
Správný přístup je použít samostatný soukromý objekt pro zámek:
private readonly object _lockObj = new object();
lock(_lockObj)
{
// kritická sekce
}
Tím zajistíte, že zámek je řízen pouze vaším kódem a nepřekrývá se s jinými částmi programu.