Il s'agit simplement d'une règle empirique de performance.
Le fait est que, comme les types valeur sont transmis par valeur, la taille entière de la structure doit être copiée si elle est transmise à une fonction, alors que pour un type référence, seule la référence (4 octets) doit être copiée. Une structure peut cependant faire gagner un peu de temps parce que vous supprimez une couche d'indirection, donc même si elle est plus grande que ces 4 octets, elle peut être plus efficace que le passage d'une référence. Mais à un certain point, elle devient si grande que le coût de la copie devient perceptible. En règle générale, cela se produit autour de 16 octets. 16 est choisi parce que c'est un nombre rond, une puissance de deux, et les alternatives sont soit 8 (ce qui est trop petit, et rendrait les structures presque inutiles), soit 32 (à ce point le coût de la copie de la structure est déjà problématique si vous utilisez les structures pour des raisons de performance).
Mais en fin de compte, c'est un conseil de performance. Il répond à la question suivante : "Qu'est-ce qui serait le plus efficace à utiliser ? Un struct ou une classe ?". Mais il ne répond pas à la question de savoir "lequel correspond le mieux à mon domaine de problèmes".
Les structures et les classes se comportent différemment. Si vous avez besoin du comportement d'un struct, alors je dirais qu'il faut en faire un struct, quelle que soit sa taille. Du moins jusqu'à ce que vous rencontriez des problèmes de performance, que vous profiliez votre code et que vous découvriez que votre structure est un problème.
votre lien dit même que c'est juste une question de performance :
Si une ou plusieurs de ces conditions ne sont ne sont pas remplies, créez un type de référence au lieu d'une structure. Le non-respect de cette directive peut avoir un impact avoir un impact négatif sur les performances.