Click here to Skip to main content
15,891,513 members
Home / Discussions / C#
   

C#

 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 1:33
Member 120616003-Nov-15 1:33 
GeneralRe: Returning reference to object (lock loses effect?) Pin
OriginalGriff3-Nov-15 1:49
mveOriginalGriff3-Nov-15 1:49 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 1:56
Member 120616003-Nov-15 1:56 
GeneralRe: Returning reference to object (lock loses effect?) Pin
OriginalGriff3-Nov-15 2:19
mveOriginalGriff3-Nov-15 2:19 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 2:22
Member 120616003-Nov-15 2:22 
GeneralRe: Returning reference to object (lock loses effect?) Pin
OriginalGriff3-Nov-15 5:37
mveOriginalGriff3-Nov-15 5:37 
AnswerRe: Returning reference to object (lock loses effect?) Pin
Pete O'Hanlon3-Nov-15 0:57
mvePete O'Hanlon3-Nov-15 0:57 
AnswerRe: Returning reference to object (lock loses effect?) Pin
John Torjo3-Nov-15 1:34
professionalJohn Torjo3-Nov-15 1:34 
This is complicated in many many levels Smile | :)

First off, if you want a read-only getter, and the list you return is small, then yeah, a copy would partially work:

C#
public static List<SocketStructure> GetHostAddressesList() {
  lock(m_locker) return m_HostAddress.ToList();
}


However, if SocketStructure is a class, you're still not completely safe.
Because you will have a copy of the list, but the elements themselves still point to your internal list - and they can still change as you access them.

What you want to return is a copy of the list (as shown above), and:
1. either have SocketStructure immutable
2. or make SocketStructure thread-safe as well.
3. make SocketStructure a struct (in that case each element in the returned list will be a copy of the original element)

Best,
John
-- LogWizard - Log Viewing can be a joy!

GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 1:53
Member 120616003-Nov-15 1:53 
AnswerRe: Returning reference to object (lock loses effect?) Pin
John Torjo3-Nov-15 1:59
professionalJohn Torjo3-Nov-15 1:59 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 2:02
Member 120616003-Nov-15 2:02 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo3-Nov-15 2:04
professionalJohn Torjo3-Nov-15 2:04 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 2:20
Member 120616003-Nov-15 2:20 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo3-Nov-15 2:25
professionalJohn Torjo3-Nov-15 2:25 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616003-Nov-15 2:38
Member 120616003-Nov-15 2:38 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo4-Nov-15 6:05
professionalJohn Torjo4-Nov-15 6:05 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo4-Nov-15 6:08
professionalJohn Torjo4-Nov-15 6:08 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616004-Nov-15 6:17
Member 120616004-Nov-15 6:17 
AnswerRe: Returning reference to object (lock loses effect?) Pin
John Torjo4-Nov-15 6:22
professionalJohn Torjo4-Nov-15 6:22 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616004-Nov-15 6:25
Member 120616004-Nov-15 6:25 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo4-Nov-15 6:34
professionalJohn Torjo4-Nov-15 6:34 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616004-Nov-15 6:45
Member 120616004-Nov-15 6:45 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo4-Nov-15 7:48
professionalJohn Torjo4-Nov-15 7:48 
GeneralRe: Returning reference to object (lock loses effect?) Pin
Member 120616004-Nov-15 7:58
Member 120616004-Nov-15 7:58 
GeneralRe: Returning reference to object (lock loses effect?) Pin
John Torjo4-Nov-15 8:32
professionalJohn Torjo4-Nov-15 8:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.