Estou confuso sobre o motivo pelo qual esse código não será compilado: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; Se eu dividir, funciona bem: var desc = isDescending ? " desc" : string.Empty; var result =
Estou confuso sobre o motivo pelo qual esse código não será compilado: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; Se eu dividir, funciona bem: var desc = isDescending ? " desc" : string.Empty; var result =
Com o C # 6.0 na visualização do VS2015, temos um novo operador ?., que pode ser usado assim: public class A { string PropertyOfA { get; set; } } ... var a = new A(); var foo = "bar"; if(a?.PropertyOfA != foo) { //somecode } o que exatamente isto
Criei um projeto de amostra, com brindes do C # 6.0 - propagação nula e inicialização de propriedades como exemplo, defina a versão de destino .NET 4.0 e ... funciona. public class Cat { public int TailLength { get; set; } = 4; public Cat Friend { get; set; } public string Mew() { return...
A versão 6.0 possui um novo recurso nameof, mas não consigo entender o objetivo, pois apenas pega o nome da variável e altera para uma string na compilação. Eu pensei que poderia ter algum objetivo ao usar, <T>mas quando eu tento nameof(T)apenas me imprime um em Tvez do tipo usado. Alguma...
Me deparei com um código que dizia public int MaxHealth => Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0; Agora estou familiarizado com as expressões Lambda. Eu simplesmente não o vi dessa maneira. Qual seria a diferença entre a afirmação acima e...
Eu estava analisando os recursos mais recentes introduzidos no C # 6.0 e apenas segui um exemplo de inicializador automático de propriedades, class NewSample { public Guid Id { get; } = Guid.NewGuid(); } mas meu IDE não reconheceu a sintaxe. Gostaria de saber como eu poderia habilitar o C #...
fundo Temos um projeto que estamos desenvolvendo no VS 2015 com o C # 6 habilitado que ocasionalmente precisa ser aberto pelos desenvolvedores que usam o VS 2013 sem o C # 6. Não temos a intenção de usar o C # 6 nessa solução específica (tanto quanto eu gostaria). Problema O Visual Studio e o...
Estou testando o Visual Studio 2015 com C # 6.0, mas os recursos de idioma não estão funcionando. Em um aplicativo Web MVC, o código a seguir é compilado: if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... } No entanto, quando executo o aplicativo via Debug e IIS...
Descobri que, embora a interpolação de strings seja realmente boa quando aplicada às chamadas Format da string da minha base de código existente, dado o limite de coluna geralmente preferido, a string rapidamente se torna muito longa para uma única linha. Especialmente quando as expressões...
No C # 6, há um novo recurso: seqüências de caracteres interpoladas. Isso permite que você coloque expressões diretamente no código, em vez de confiar em índices: string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); Torna-se: string s = $"Adding \"{x}\" and {this.Y()} to...
Como parte da documentação do Roslyn no GitHub, existe uma página chamada Status de implementação do recurso de idioma , com recursos de idioma planejado para C # e VB. Um recurso que eu não conseguia entender era o private protectedmodificador de acesso: private protected string GetId() { … }...
Atualizado um tipo de projeto existente do site Visual Studio 2015, alterei o Framework para 4.6. Eu esperava ter todos esses novos recursos disponíveis no meu código por trás dos arquivos. Infelizmente, estou recebendo erros como: Erro CS8026: O recurso 'propriedade corporal da expressão' não...
Estou dando uma olhada em alguns dos novos recursos no C # 6, especificamente, "usando estática" . using static é um novo tipo de cláusula using que permite importar membros estáticos de tipos diretamente para o escopo. (Parte inferior da postagem do blog) A ideia é a seguinte, de acordo...
No C # 6, você pode usar o nameof()operador para obter uma string contendo o nome de uma variável ou tipo. Isso é avaliado em tempo de compilação ou em tempo de execução por meio de alguma API
Desejo usar C # 6 em meu projeto (propagação nula, outros recursos). Instalei o VS 2015 no meu PC e ele funciona de maneira brilhante e cria códigos de teste como var user = new SingleUserModel(); //all model fields are null var test = user.User?.Avatar?["blah"]; Mas quando eu envio meu projeto...
Costumo usar o operador de propagação nulo em meu código porque ele me dá um código mais legível, especialmente em consultas longas, não preciso verificar o valor nulo de todas as classes usadas. O código a seguir lança um erro de compilação de que não podemos usar o operador de propagação nulo...
Até hoje, poderia fazer uso de construtores primários, como: public class Test(string text) { private string mText = text; } Para poder fazer isso, no CTP anterior do Visual Studio, eu tive que adicionar isso ao arquivo csproj: <LangVersion>Experimental</LangVersion> De qualquer...
Criei uma propriedade automatizada: public int Foo { get; } Isso é apenas getter. Mas quando eu construo um construtor, posso mudar o valor: public MyClass(string name) { Foo = 5; } Por que isso é possível, embora seja apenas para
Um novo recurso do C # 6.0 permite declarar variáveis dentro do método TryParse. Eu tenho algum código: string s = "Hello"; if (int.TryParse(s, out var result)) { } Mas recebo erros de compilação: O que estou fazendo errado? PS: nas configurações do projeto estão definidos C # 6.0 e .NET...
Isso é compatível? Em caso afirmativo, existe algum truque para ativá-lo? Estou assumindo que o Razor não está usando um compilador novo o suficiente ...? O IDE VS2015 parece estar bem com ele, mas em tempo de execução estou conseguindo CS1056: Caráter inesperado