2010-06-26 13 views
4

Est-il possible d'utiliser des paramètres facultatifs (et d'autres fonctionnalités purement syntaxiques C# 4.0) dans les applications Windows Phone XNA?Paramètres facultatifs dans une application XNA Windows Phone C#

J'ai lu et entendu des informations contradictoires à ce sujet. Dans les Paramètres de construction avancés pour mon application, la version linguistique est définie sur C# 3.0 (C# 4.0 est et non disponible dans la liste déroulante Langue). Est-ce que 3.0 est la version "officielle" de C# qui sera utilisée initialement pour le développement de Windows Phone? Est-ce que je suis stupide de m'attendre même à ce que les fonctionnalités C# 4.0 soient disponibles?

Répondre

4

Sous le flair Silverlight et XNA se trouve une version du .NET 3.x (3.7?) Cadre compact. Aussi loin que Windows Phone 7 se situe par rapport au reste du marché, il est peu probable qu'une structure compacte .NET 4.0 soit insérée (afaik n'existe pas encore) ou toute autre modification architecturale majeure requise pour prendre en charge le jeu. C# 4,0.

+0

Merci. Avant de marquer votre réponse comme la réponse, je veux être clair: Vous dites que je ne devrais pas m'attendre à l'une des fonctionnalités C# 4.0? – Sucralose

+1

Oui, ne vous attendez pas à des fonctionnalités 4.0 dans la version de production initiale. –

+0

Je vous évaluerais si je pouvais! Merci. – Sucralose

1

J'ai trouvé que les paramètres optionnels fonctionnent correctement dans Silverlight mais pas dans XNA. J'utilise les trucs #if pour contourner ce en code partagé comme suit:

#if !SILVERLIGHT 
public SomeClass () : this (null) 
{ 
} 

public SomeClass(object someParam) 

#else 

public SomeClass(object someParam = null) 

#endif 
{ 
    m_someParam = someParam; 
} 

Mais c'est une touche laid. J'ai également remarqué que la boîte de dialogue Ajouter des références du Productivity Power Pack ne fonctionne pas avec les projets XNA, ce qui indique que quelque chose de louche se passe avec les projets XNA. [Comme une note de côté, je peux déployer et déboguer des applications Silverlight à l'émulateur via VS, mais pas d'applications non XNA]

1

La meilleure solution: utiliser la surcharge de fonctions.

Exemple (provoque des erreurs):

public void RenderRadius(SpriteBatch spriteBatch, Entity entity, float radiusOverride = -1) 

...

Solution:

public void RenderRadius(SpriteBatch spriteBatch, Entity entity){ RenderRadius(spriteBatch, entity, -1); } 
public void RenderRadius(SpriteBatch spriteBatch, Entity entity, float radiusOverride) 

...

Super facile. Terminé.

0

Je ne sais pas s'il est possible d'utiliser les paramètres optionnels XNA (je ne l'ai jamais eu le désir de), mais vous pouvez faire ce que vous parlez.

http://xboxforums.create.msdn.com/forums/p/54007/515654.aspx

Au lien ci-dessus, il est dit de mettre votre version par défaut plutôt que C# 3.0. On dirait que vous étiez sur la bonne voie.