I wish to directly modify a variable\'s value outside of a method from inside it.
Pointers are the way, correct?
How?
No. In c# you can apply pass by reference semantics using the ref or out modifiers:
void Foo( ref string s, ref int x )
{
s = "Hello World"; // caller sees the change to s
x = 100; // caller sees the change to x
}
// or, alternatively...
void Bar( out string s )
{
s = "Hello World";
}
The difference between these two, is that with out, the caller does not have to specify a value when calling the method, since it is required that the called method will assign a value before exiting.
In C#, "pointers" are something that you can only use in unsafe code. As in C or C++, pointers in C# allow you to refer to the location of a variable or an object. References, in C# are different - you shouldn't think of them as pointers - they are intended to be more opaque and provide a way to "refer" to a variable or object without necessarily implying that they indicate its location in memory.
With references, you can use special keywords (out, ref) to pass an alias to a variable. These are only available in the context of method calls - where the compiler can use information about the lifetime of the referents to make sure that the reference does not outlive the original variable being aliased.