IOW, in "managed code" its not possible to do things like manipulate arbitrary memory in the machine - a behavior relied upon by things like some viruses and worms. C# has no pointer construct and so you are playing in "the sandbox" as Chris said. You can't hurt anything from there and your code is subject to user defined security policies.
Unmanaged code is like C/C++. You can do anything to any byte in the machine. No safety rails, no sandbox, no second chances.