Javascript Objet en C#
Est-il un moyen facile de créer quelque chose comme code JS:
var players = [
{name:"Joe",score:25,color:"red",attribs:[0,1,2,3,4]},
{name:"Jenny",score:1,color:"black",attribs:[4,3,2,1,0]}
];
dans C# (pour Unity 3d)?
Je l'ai déjà regardé la Liste, et le Dictionnaire de ArrayList, mais tout couture afin ... trop rigides et trop compliqué...
L'objectif principal ici est d'avoir quelque chose de flexible, qui peut être l'accès de beaucoup d'autres endroits w/o le besoin de rappeler les indices de tableau, types de variables, etc. Sans doute ne peut pas être fait en C#... Mais quelque chose qui est assez proche devrait être suffisant. ArrayList peut-être...?
Merci.
- Jetez un oeil à JSON analyseurs, personnellement, je suis très friand de JsonFX.
- jetez un oeil à cette stackoverflow.com/questions/1056121/...
- le c# est un type de langage sûr, je ne dirais pas que inflexibles ou compliqué, juste une autre langue
- juste pour être clair, ce morceau de JavaScipt est un tableau d'objets, ce concept est directement transférable à C#. Êtes-vous en mesure d'ajouter le code C# qui vous ont essayé et quels sont les problèmes que vous rencontrez avec elle, c'est à dire pourquoi est-il rigide et trop compliqué, est-il lui manque quelques fonctionnalités dont vous avez besoin. La question que vous pourriez avoir est de le faire avec un langage faiblement typé vs a fortement tapé un
- MERCI LES GARS POUR TOUTES VOS RÉPONSES.
Vous devez vous connecter pour publier un commentaire.
Ce JavaScript étant un Tableau d'objets est directement transférable à C#, et que vous avez plusieurs façons de le faire et de multiples classes de collection à utiliser (à la différence de JavaScript qui n'a qu'une classe de collection)
Il peut presque être écrit textuellement dans C# et est parfaitement valide (en Utilisant les Types Anonymes):
Mais je ne suis pas sûr si cela va réaliser ce que vous voulez (Fonctionnalité sage)
De l'OMI, de la création d'un tapé objet serait une meilleure approche (je ne considère pas cela pour être une meilleure approche en C# et JavaScript), donc je m'approche plus de cette façon (JavaScript):
et la même chose en C#:
ou pour obtenir beaucoup plus de flexibilité, vous pouvez les utiliser dans une Liste comme:
var
, vous devrez utiliser un type, essayez de le tapé les options de sensPlayer[]
)Pourriez-vous faire une
Player
modèle (classe) avec leName
,Score
,Color
,Attribs
propriétés et stocker chaquePlayer
en mémoire dans unList<Player>
:À l'aide de
System.Linq
vous pouvez lancer une requête sur leList<Player>
pour certains joueurs, par exemple:Player player = myPlayers.SingleOrDefault(p => p.Name == "Joe");
Un crédit supplémentaire - toujours tester ce joueur n'est pas par défaut avant d'essayer de l'utiliser:
Plus ou moins correspondre à la syntaxe serait anonyme types:
mais il ont la signification très différente de celle de JavaScript (tableau de immuable des objets fortement typés en C# vs dictionnaire de canard tapé objet en JavaScript).
Vous voudrez peut-être chercher dans l'aide de
dynamic
et ExpandoObject qui existe à l'appui des langages comme le JavaScript .Net s'ils sont présents dans Unity3d.Noter que le C# est un langage fortement typé et il peut être préférable de changer de mode de pensée pour correspondre à la langue. Rester avec le JavaScript est l'option raisonnable si vous ne pouvez pas obtenir loin de canard tapé langues.