The problem is that there aren't REALLY any "primitive" types, int is System.Int32,
bool is System.Boolean, string is System.String... They are all classes
or structs with constructors and methods, unlike an int in C++ where you're
really compiling down to a primitive type.
int and bool are structs.... from the msdn documentation
public struct Int32 : IComparable, IFormattable, IConvertible,
IComparable<int>, IEquatable<int>
public struct Boolean : IComparable, IConvertible, IComparable<bool>,
IEquatable<bool>
string is not a value type... from MSIL decompiler (valuetypes extend ValueType,
not object)
..class public auto ansi serializable sealed beforefieldinit String
extends object
implements System.IComparable, System.ICloneable, System.IConvertible,
System.Collections.IEnumerable
{