string test

  • Thread starter Thread starter Green
  • Start date Start date
G

Green

Hi, All
According to C#.Net

string s = "foo";
string z = "foo";

s and z gonna share the same memory location, correct me if I am wrong. If
it is correct, how can I prove this. Is there any tool can show me the
memory location.

Thanks in advance!
 
Green said:
string s = "foo";
string z = "foo";

s and z gonna share the same memory location, correct me if I am wrong. If
it is correct, how can I prove this. Is there any tool can show me the
memory location.

1) Why would you wan't to prove this?

2) object.ReferenceEquals(s,z)
 
Green said:
Hi, All
According to C#.Net

string s = "foo";
string z = "foo";

s and z gonna share the same memory location, correct me if I am wrong. If
it is correct, how can I prove this. Is there any tool can show me the
memory location.

Thanks in advance!

s and z are different memory locations, they are the variables
(register/local allocated in this case) that contain the value of the
reference pointing to the GC heap allocated object of type string.

You can't take the contents of the variable, but you can take the address of
the first character of the string, so if you run following, you'll see that
both adresses are equal. When you change the contents of one of the strings,
you'll notice the addresses are different.

string a = "foo";
string b = "foo";

unsafe {
fixed (char* aa = a)
{
Console.WriteLine("{0:x}", (int)new IntPtr(aa));
}

fixed (char* aa = b)
{
Console.WriteLine("{0:x}", (int)new IntPtr(aa));
}
}

Willy.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top