Ja, die Länge ist festgelegt und ja, die mittlere Zahl ist immer 4, wenn Sie das Standardformat tostring verwenden. Einige der Bits in der GUID (fast überall, wo es sich nicht um Windows handelt, als UUID bekannt) sind fest, um Dinge wie Version usw. anzugeben.
http://en.wikipedia.org/wiki/Uuid
EDIT Ich sollte hinzufügen, dass die "4" nur für Guids gilt, die nach dem in .NET implementierten Algorithmus Guid.NewGuid erzeugt wurden. Es gibt nichts, was Sie daran hindert, ein beliebiges Byte[16] zu nehmen und es in eine Guid zu konvertieren. Sie können sich also nur darauf verlassen, dass es bei der aktuellen Implementierung des Algorithmus in .Net 4 sind. Wenn Sie Guids aus einer anderen Quelle beziehen, können Sie sich nicht auf die 4 verlassen. Ein Update von .Net oder möglicherweise Windows (je nachdem, ob .Net seinen eigenen oder den Windows-Generator verwendet) kann die festen Zahlen der GUID ändern
Der folgende Code z.B. ist vollständig funktionsfähig und hat keine 4 an der Stelle:
var rand = new Random();
var byteArray = new byte[16];
rand.NextBytes(byteArray);
var g = new Guid(byteArray);