posted 3 years ago
C# is a Microsoft convention. Microsoft started with MS-DOS, which stored filenames in upper-case only. When Windows and longer filenames came out, so did the ability to mix cases in filenames, but starting with upper-case became a convention even so.
When Microsoft developed their Windows APIs, one of the ways that they distinguished their own functions from those of general Unix functions like the standard C library was to reflect that convention in function names as well.
Along came OLE/COM and a mix of public standard and user-defined interfaces, and carrying on the tradition, their names started with a capital "I".
There may be other contributing factors, but that's how it played out in my view.
Contrasting that, Java capitalizes class names, I suspect, from the fact that OOP had a somewhat mathematical/theoretical origin, and in math, upper-case letters (in whatever alphabet) are often indicators of meta-somethings. Whereas members and properties are lower-case as in C.
Circling around back to C, that viewpoint preceded Java in C++, and since C# is a descendant of C/C++, it gets it from both directions.
Experience keeps a dear School, but Fools will learn in no other.
---
Benjamin Franklin - Postal official and Weather observer