That is frankly the issue. Using something tied to a vendor or OS gives the wrong impression to students right off the bat. Try convincing them of portability afterwards...
I know there are C# implementations on Unix (Mono...) but they tend to be way less robust than the equivalent Java implementations.
If anything, ANSI C should be used and students should learn ANSI C++ when it comes to OO programming, as those languages are just the most portable ones there are around. Though the MM is a pain in both languages, strings are completely deficient in ANSI C (by the very nature of the language and its default library) and maybe not really something you want to submit to students as you try to teach them high level concepts rather than language quirks (because college courses are not about language quirks, the language is the tool to learn the actual science).
That said, I learned programming cutting my teeth on ANSI C and learned GUI programming with straight Win32 (Petzold's book is excellent, no matter how screwed up the API is!). Yes, I know, I must be a masochist.