Compte tenu des types d'enregistrement suivants:Pourquoi ces types d'enregistrements sont-ils en conflit?
type drCode1Body = {DrCode : byte ; Name : string ; Timestamp : DateTime ; Size : uint32 ; Options : byte}
type drCode2Body = {DrCode : byte ; LastBlock : byte ; BlockNumber : uint16 ; BlockSize : uint16 ; BlockData : array<byte>}
type drCode4Body = {DrCode : byte ; Name : string ; Timestamp : DateTime ; Options : byte ; Size : uint16 ; Data : array<byte>}
Si je tente de créer des instances comme celui-ci (des extraits de code, pas de code complet):
{DrCode = 1uy ; Name = name ; Timestamp = timestamp ; Size = size ; Options = options}
{DrCode = 2uy ; LastBlock = lastBlock ; BlockNumber = blockNumber ; BlockSize = blockSize ; BlockData = blockData}
{DrCode = 4uy ; Name = name ; Timestamp = timestamp ; Options = options ; Size = size ; Data = data }
Il n'accepte pas la première ligne soit valide. Même si la taille de la première ligne est une valeur uint32. Il dit simplement "aucune assignation donnée pour le champ" Données "."
Modification des noms des paramètres ne permet pas non plus, j'ai essayé cela aussi:
{new drCode1Body with DrCode = 1uy and Name = name and Timestamp = timestamp and Size = size and Options = options}
Puis-je obtenir l'exception suivante:
Cette expression est de type drCode1Body mais est ici utilisé avec tapez drCode4Body
Pendant que j'indique clairement quel type d'enregistrement je veux ici.
Que se passe-t-il?
Mais j'ai essayé de donner chaque enregistrement d'un nom de DrCode unique, juste à test comme type drCode1Body = {DrCode1: octet ... et d type drCode2Body = {DrCode2: octet et il a toujours le même résultat – TimothyP
donne la même erreur: {drCode1Body.DrCode = 1uy, drCode1Body.Name = nom, drCode1Body.Timestamp = horodatage, drCode1Body.Size = taille, drCode1Body.Options = options} Mais vous m'avez à quelque chose .... – TimothyP
@ TimothyP: Essayez ceci: let (r1: drCode1Body) = {DrCode = 1uy; .... soit r2 = {DrCode = 2uy; .... soit r3 = {DrCode = 4uy; .... Cela devrait aussi fonctionner, même si la solution de Brian fonctionne pour moi. –