Je ne comprends pas pourquoi ce code ne compilera pas: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; Si je le sépare, cela fonctionne très bien: var desc = isDescending ? " desc" : string.Empty; var result =
Je ne comprends pas pourquoi ce code ne compilera pas: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; Si je le sépare, cela fonctionne très bien: var desc = isDescending ? " desc" : string.Empty; var result =
Avec C # 6.0 dans l'aperçu VS2015, nous avons un nouvel opérateur ?., qui peut être utilisé comme ceci: public class A { string PropertyOfA { get; set; } } ... var a = new A(); var foo = "bar"; if(a?.PropertyOfA != foo) { //somecode } Qu'est-ce que cela fait
J'ai créé un exemple de projet, avec des goodies C # 6.0 - propagation nulle et initialisation des propriétés à titre d'exemple, définissez la version cible .NET 4.0 et cela ... fonctionne. public class Cat { public int TailLength { get; set; } = 4; public Cat Friend { get; set; } public string...
La version 6.0 a une nouvelle fonctionnalité nameof, mais je ne comprends pas le but de celle-ci, car elle prend simplement le nom de la variable et le change en chaîne lors de la compilation. Je pensais que cela pourrait avoir un but lors de l'utilisation, <T>mais lorsque j'essaye,...
Je suis tombé sur un code qui disait public int MaxHealth => Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0; Maintenant, je connais un peu les expressions Lambda. Je ne l'ai tout simplement pas vu utilisé de cette façon. Quelle serait la différence entre la...
Je parcourais les dernières fonctionnalités introduites dans C # 6.0 et je viens de suivre un exemple d'initialisation automatique des propriétés, class NewSample { public Guid Id { get; } = Guid.NewGuid(); } mais mon IDE n'a pas reconnu la syntaxe. Je me demande comment je pourrais activer C # 6.0...
Contexte Nous avons un projet que nous développons dans VS 2015 avec C # 6 activé qui doit parfois être ouvert par les développeurs utilisant VS 2013 sans C # 6. Nous n'avons pas l'intention d'utiliser C # 6 dans cette solution particulière (autant que je le souhaiterais). Problème Visual Studio et...
Je teste Visual Studio 2015 avec C # 6.0 mais les fonctionnalités du langage ne fonctionnent pas. Dans une application Web MVC, le code suivant se compile: if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... } Cependant, lorsque j'exécute l'application via Debug et IIS...
J'ai trouvé que si l'interpolation de chaîne est vraiment agréable lorsqu'elle est appliquée aux appels de format de chaîne de ma base de code existante, étant donné la limite de colonne généralement préférée, la chaîne devient rapidement trop longue pour une seule ligne. Surtout lorsque les...
Dans le cadre de la documentation Roslyn sur GitHub, il existe une page intitulée Statut de l'implémentation de la fonctionnalité de langage , avec des fonctionnalités de langage prévues pour C # et VB. Une fonctionnalité sur laquelle je ne pouvais pas comprendre était le private...
En C # 6, il y a une nouvelle fonctionnalité: les chaînes interpolées. Celles-ci vous permettent de placer des expressions directement dans le code, plutôt que de vous fier aux index: string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); Devient: string s = $"Adding \"{x}\"...
Mise à jour d'un type de projet de site Web existant Visual Studio 2015, j'ai changé le Framework en 4.6. Je m'attendais alors à avoir toutes ces nouvelles fonctionnalités disponibles dans mon code derrière des fichiers. Malheureusement, j'obtiens des erreurs comme: Erreur CS8026: La fonctionnalité...
Je suis en train de jeter un œil à quelques nouvelles fonctionnalités de C # 6, en particulier, "using static" . using static est un nouveau type de clause using qui vous permet d'importer des membres statiques de types directement dans la portée. (En bas du billet de blog) L'idée est la suivante,...
En C # 6, vous pouvez utiliser l' nameof()opérateur pour obtenir une chaîne contenant le nom d'une variable ou d'un type. Est-ce évalué au moment de la compilation ou à l'exécution via une API
Je souhaite utiliser C # 6 dans mon projet (propagation nulle, autres fonctionnalités). J'ai installé VS 2015 sur mon PC et cela fonctionne à merveille et crée un code de test comme var user = new SingleUserModel(); //all model fields are null var test = user.User?.Avatar?["blah"]; Mais lorsque je...
J'utilise souvent un opérateur de propagation nul dans mon code car il me donne un code plus lisible, en particulier dans les requêtes longues, je n'ai pas à vérifier la valeur nulle de chaque classe utilisée. Le code suivant lève une erreur de compilation selon laquelle nous ne pouvons pas...
Jusqu'à ce jour, je pouvais utiliser des constructeurs primaires, tels que: public class Test(string text) { private string mText = text; } Pour pouvoir le faire, dans le CTP Visual Studio précédent, je devais ajouter ceci au fichier csproj: <LangVersion>Experimental</LangVersion> Quoi...
J'ai créé une propriété automatisée: public int Foo { get; } Ceci est uniquement un getter. Mais quand je construis un constructeur, je peux changer la valeur: public MyClass(string name) { Foo = 5; } Pourquoi est-ce possible, même s'il s'agit d'un accès
Une nouvelle fonctionnalité en C # 6.0 permet de déclarer une variable dans la méthode TryParse. J'ai du code: string s = "Hello"; if (int.TryParse(s, out var result)) { } Mais je reçois des erreurs de compilation: Qu'est ce que je fais mal? PS: dans les paramètres du projet, C # 6.0 et .NET...
Est-ce pris en charge? Si oui, y a-t-il une astuce pour l'activer? Je suppose que Razor n'utilise pas un compilateur assez récent ...? L'IDE VS2015 semble bien fonctionner, mais au moment de l'exécution, je reçois CS1056: caractère inattendu '$'