Precisione, pignoleria o semplice delirio?

A mio avviso, il .NET framework ed il linguaggio C# sono caratterizzati da un design decisamente brillante, anche se ogni tanto qualche pecca  (o presunta tale) salta fuori. Ricordo ancora quando intervistammo Eric Gunneerson (allora PM di C#) chiedendo lumi sull'uso (ambiguo?) della keyword using sia come direttiva sia come statement ricavandone, a dire il vero, una risposta tutt'altro che soddisfacente. Ecco un paio di considerazioni sulle quali mi piacerebbe conoscere alcune opinioni.

Parlando del Dispose Pattern, mi chiedo spesso se abbia senso definirlo tale (pattern, appunto) o se non sarebbe più corretto riferirsi ad esso definendolo un idioma. Se è vero che: " Idioms are language-specific in that the problem they solve, or the context in which those problems are encountered, are caused by the language" allora credo che forse la riflessione sia fondata e non fuori luogo.

Vogliamo parlare di array? In C#, un array di interi (ma potremmo anche utilizzare un altro tipo) si può definire e costruire in questo modo:
int[] i = new int[101];
Quel int[] lascia chiaramente intendere che l'array si possa considerare un vero e proprio tipo, oltretutto derivato da System.Array, visto che è possibile chiedere:
Array a = i;
E che:
i.GetType().BaseType.Name
Restituisce "Array". Ciò che appare in qualche modo incoerente è vedere accanto al metodo costruttore new un tipo differente, ossia int[101] Probabilmente, una espressione formalmente più corretta sarebbe stata:
int[] i = new int[](101); 
Immaginando di utilizzare quindi un costruttore parametrico in overload.

Idee? Opinioni? Commenti? (Non sparate sul pianista...)

«marzo»
domlunmarmergiovensab
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789