You will have a little more context to help answer your question (" [...] define the idea of 'type' in a C#.Net context[...] "), but here's a quick hit. The concept of type in .NET comes from object-oriented programming and is a generalization of data type from programming languages to OOP. In your simplest form, you could say that ...
A type is a named template for a structure whose instances contain data and / or behavior.
Answers to questions in the EDIT section:
[...] how does the CLR handle type ideas?
I don’t know exactly what you mean by that, but the type in the CLR - the "named template" in my definition above - is physically stored as CIL and represented in the system as an object that itself (like all objects) has a type.
In this case, this type is called, of course, System.Type . (If you are interested, this type is physically stored in the mscorlib assembly.) I know that I use the term in my own definition, but this is difficult to do, since the concept is essentially recursive.
[...] does the CLR need to implicitly cast null to a string in the assignment string s = null? The answers so far do not mean no, this is not so, but what does this task allow? Is zero just considered a special case here?
Yes, this is a special case, and no, neither the compiler nor the CLR added null to string (or anything else). null not of type (1) and cannot be converted to any type - it is a special “value” that indicates the absence of value (2) and, therefore, is assigned to a variable of any reference type (3).
(1) Depending on where you look, the null type may or may not be.
(2) Such a value will be a reference for an instance of this type.
(3) There are two types of types - reference types and type values - and null true only apply to the previous view . It may appear in the source code (for example, int? i = null; ) as a nullable value assigned to a variable, but it is just syntactic sugar and what happens behind the scenes is very different and only concerns tangentially related to this discussion.