Sobes.tech
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.