Because you pass a reference to your StringBuilder s1 to Func.
Inside Func, the reference to that same StringBuilder instance is called "myString".
You first tell it to do something ("myString.Append("Test")
), then set the reference INSIDE Func to null. The result of Append is visible to Main(); the reference being set to null does not influence s1 in Main.