Click here to Skip to main content
15,922,533 members
Home / Discussions / C#
   

C#

 
GeneralRe: Caching multiple ArrayLists Pin
Rlearning11-Nov-05 6:00
Rlearning11-Nov-05 6:00 
GeneralRe: Caching multiple ArrayLists Pin
Christian Graus13-Nov-05 9:48
protectorChristian Graus13-Nov-05 9:48 
Questioncheckedlistbox highlight and spacing Pin
SeanCM10-Nov-05 12:29
SeanCM10-Nov-05 12:29 
AnswerRe: checkedlistbox highlight and spacing Pin
whizzs11-Nov-05 8:49
whizzs11-Nov-05 8:49 
QuestionProblems with tabcontrol Pin
ika210-Nov-05 12:23
ika210-Nov-05 12:23 
QuestionHow to Get MouseEnter to Work With Mouse Button Down Pin
redfish3410-Nov-05 11:49
redfish3410-Nov-05 11:49 
QuestionA similar action to a try catch statement? Pin
Kuira10-Nov-05 11:49
Kuira10-Nov-05 11:49 
AnswerRe: A similar action to a try catch statement? Pin
Christian Graus10-Nov-05 12:42
protectorChristian Graus10-Nov-05 12:42 
GeneralRe: A similar action to a try catch statement? Pin
Kuira10-Nov-05 13:25
Kuira10-Nov-05 13:25 
GeneralRe: A similar action to a try catch statement? Pin
Christian Graus10-Nov-05 13:27
protectorChristian Graus10-Nov-05 13:27 
GeneralRe: A similar action to a try catch statement? Pin
Kuira10-Nov-05 13:46
Kuira10-Nov-05 13:46 
GeneralRe: A similar action to a try catch statement? Pin
Leslie Sanford10-Nov-05 18:47
Leslie Sanford10-Nov-05 18:47 
GeneralRe: A similar action to a try catch statement? Pin
Kuira13-Nov-05 12:15
Kuira13-Nov-05 12:15 
GeneralRe: A similar action to a try catch statement? Pin
Leslie Sanford13-Nov-05 13:11
Leslie Sanford13-Nov-05 13:11 
GeneralRe: A similar action to a try catch statement? Pin
Kuira13-Nov-05 17:05
Kuira13-Nov-05 17:05 
GeneralRe: A similar action to a try catch statement? Pin
Leslie Sanford13-Nov-05 17:37
Leslie Sanford13-Nov-05 17:37 
GeneralRe: A similar action to a try catch statement? Pin
Kuira14-Nov-05 11:53
Kuira14-Nov-05 11:53 
QuestionParsing an XML string Pin
Ravi Bhavnani10-Nov-05 11:49
professionalRavi Bhavnani10-Nov-05 11:49 
AnswerRe: Parsing an XML string Pin
Ravi Bhavnani10-Nov-05 12:09
professionalRavi Bhavnani10-Nov-05 12:09 
Question.net 2.0 Membership in Windows Applications? Pin
MightyJoe10-Nov-05 11:11
MightyJoe10-Nov-05 11:11 
QuestionDrag Drop within a Control Pin
miah alom10-Nov-05 10:41
miah alom10-Nov-05 10:41 
QuestionByValue parameter is not used Pin
Seraphin10-Nov-05 10:08
Seraphin10-Nov-05 10:08 
AnswerRe: ByValue parameter is not used Pin
Leslie Sanford10-Nov-05 11:02
Leslie Sanford10-Nov-05 11:02 
GeneralRe: ByValue parameter is not used Pin
Seraphin10-Nov-05 13:14
Seraphin10-Nov-05 13:14 
GeneralRe: ByValue parameter is not used Pin
Leslie Sanford10-Nov-05 16:44
Leslie Sanford10-Nov-05 16:44 
Hmm, I thought I had replied to this post, but it's not showing up. Here is the second attempt (good thing I had my answer saved).

Say I did this:

private void button4_Click(object sender, System.EventArgs e)
{    
    CheckArray(ref originalArray);
}

private void CheckArray(ref int[,] iArray)
{    
    iArray = new int[10, 10];    
    iArray[0, 0] = 0;
} 


This will actually change the originalArray variable. It now points to the new array I created in the CheckArray method. Without the ref modifier, it would only change the local iArray variable.

A reference is a variable that points to some object in memory. The originalArray variable is a reference to an array held in memory somewhere. It allows me to perform operations on the array. However, operations on the originalArray variable itself only effect that variable. For example:

int[] arrayA = new int[10];
int[] arrayB = arrayA;  

// Both arrayA and arrayB reference the same array.

// An operation on the array via the arrayA reference variable.
// Does not affect arrayB.
arrayA[0] = 42;

// An operation on the arrayA reference variable itself.
arrayA = null;

// This will print 42 because the arrayB reference variable
// still points to the array.
Console.WriteLine(arrayB[0]);


When a reference variable is passed by value to a method, a copy of the reference variable itself is made, much like what I did above with the arrayB variable. You'll notice that when I nulled out the arrayA, it did not affect the arrayB variable. It's the same when you pass a reference by value to a method. operations on the reference variable itself only affect the local variable.

Now, the ref keyword gives me a reference to a reference, so to speak. If I modify a parameter with ref, and perform operations that change the variable itself, it also affects the reference variable that was originally passed to the method.

This takes awhile to wrap your mind around it, but keep at it and it will eventually make sense. Smile | :)

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.