@jupiter I disagree. To me, primitive means either:
1) not comprised of smaller values, or
2) not involving a reference.
Strings don't qualify either way.
C#, unlike Java, has structs, which are primitive in sense 2 but not sense 1. It might be reasonable for dates to fall into this category. I wouldn't want strings to behave this way, because s1 = s2 shouldn't take time proportional to the length of the string.
@TimPurdum @jupiter Yes, that's a win.