2009-12-11 6 views
3

Lorsque mon programme écrit en C# ou VB.NET ou un autre langage de famille .NET s'exécute sous Windows et System.Guid.NewGuid() la génération est-elle toujours effectuée en transférant l'appel à UuidCreate() fourni par Windows ou existe-t-il d'autres façons de générer?System.Guid.NewGuid() est-il toujours implémenté via UuidCreate() sous Windows?

+0

Pourquoi est-ce important? – wowest

+0

L'algorithme utilisé pour créer Guid peut être important si votre code dépend de son caractère aléatoire. – Guillaume

+0

Tant que la fonction qui génère le GUID suit la norme pour la création UUID les chances d'une collision sont minimes. Voir http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt pour plus de détails sur l'algorithme –

Répondre

3

Non pas toujours. Selon sa documentation, la fonction UuidCreate est uniquement disponible sur Windows Server 2000 et versions ultérieures. Au moins une version de l'infrastructure .Net fonctionnait sous Windows 98 et contenait la classe Guid. Par conséquent, il n'aurait pas pu utiliser UuidCreate. Le 1.X pour sûr couru sur Windows 98 et je ne me souviens pas de la version 2.0.

Hmmm, je commence à soupçonner que c'est un problème de documentation. La fonction CreateFile indique également qu'elle est uniquement disponible à partir de 2000. Peut-être que cette documentation est le reflet du fait que 98 n'est pas un système d'exploitation pris en charge.