As strings are "normally" immutable .NET points all strings which are the same to the same memory address. That behaviour is called string interning and why ReferenceEquals("Hello", "Hello") is true. We can misuse that behaviour and just rewrite the underlying memory (via the unsafe keyword and pointers). In my example below I rewrite "Hello" to "Melon" and even though I use two kinds of const strings, you still see two times Melon.