i had read article http://www.albahari.com/valuevsreftypes.aspx
as per this, int
value type , form
example of reference type.
point mypoint = new point (0, 0); // new value-type variable form myform = new form(); // new reference-type variable string mystringval="test"; test (mypoint, myform); // test method defined below void test (point p, form f) { p.x = 100; // no effect on mypoint since p copy f.text = "hello, world!"; // change myform’s caption since // myform , f point same object f = null; // no effect on myform }
so instead of form variable myform
, if pass string value function test, change original value declared outside?
also benefit of keeping string reference type, if, anyhow value saved in stack , reference stored in heap?
if pass string value function test, change original value declared outside?
no, neither did value of myform
change, myform
variable still points/refers same form
object (the object created via new form()
).
in test
method, when called:
f.text = "hello, world!";
you did not change variable f
, changed f.text
different.
in other words, changing property on object both f
, myform
refer to. still f
, myform
refer same original object.
note when changed f
null
, variable myform
did not change. now, f
refers nothing, myform
variable still refers original object.
if want change original myform
variable (make point/refer form
object) or mystringval
(make refer string) pass them test method reference this:
void test (point p, ref form f) { ... } void test (point p, ref string s) { ... }
Comments
Post a Comment