Articles of c # 7.0

Por que não retorna pelo trabalho de referência para elementos de collections?

O exemplo a seguir de retornar por referência é de O que há de novo no C # 7.0 : public ref int Find(int number, int[] numbers) { for (int i = 0; i < numbers.Length; i++) { if (numbers[i] == number) { return ref numbers[i]; // return the storage location, not the value } […]

Nome ValueTuple propriedades ao criar com novo

Eu sei que posso nomear parâmetros quando eu criar uma tupla implicitamente como: var me = (age: 21, favoriteFood: “Custard”); É possível nomear parâmetros quando uma tupla é criada explicitamente? ou seja var me = new ValueTuple(21, “Custard”);

Atribuindo funções locais aos delegates

No C # 7.0, você pode declarar funções locais, isto é, funções que residem dentro de outro método. Essas funções locais podem acessar variables ​​locais do método circundante. Como as variables ​​locais existem apenas enquanto um método está sendo chamado, imaginei se uma function local poderia ser atribuída a um delegado (que pode viver mais […]

C # 7 tuplas e lambdas

Com a nova syntax de tupla c # 7, é possível especificar um lambda com uma tupla como parâmetro e usar valores descompactados dentro do lambda? Exemplo: var list = new List(); maneira normal de usar uma tupla no lambda: list.Select(value => value.Item1*2 + value.Item2/2); Eu esperava algum novo açúcar para evitar .Item1 .Item2 , […]

Como faço para obter a nova semântica assíncrona trabalhando no VS2017 RC?

Citando a partir das notas de versão do Visual Studio 2017 RC Extensões de Linguagem e Analisadores Esta versão inclui algumas extensões de nova linguagem propostas que estamos trabalhando para as próximas versões do C # e Visual Basic. Esses novos resources de idioma são habilitados por padrão e incluem: Para c #: Tipos de […]

Por que o C # 7 ValueTuples implementa o método Equals, mas não o operador double equals?

Considere o seguinte trecho de código: var tuple1 = (7, “foo”); var tuple2 = (7, “foo”); var tuple3 = (42, “bar”); Assert.That(tuple1.Equals(tuple2), Is.True); //This passes Assert.That(tuple1.Equals(tuple3), Is.False); //This passes Assert.That(tuple1 == tuple2, Is.True); //This does not compile Os dois primeiros afirmam passar. O terceiro não compila. Por que o ValueTuple implementa um método Equals personalizado, […]

Declaração de variável inline não compila ao usar ‘== false’ em vez de operador de negação

Considere os seguintes trechos: void Foo(object sender, EventArgs e) { if (!(sender is ComboBox comboBox)) return; comboBox.DropDownWidth = 100; } comparado com void Bar(object sender, EventArgs e) { if ((sender is ComboBox comboBox) == false) return; comboBox.DropDownWidth = 100; } O código que inclui Foo() compila com sucesso no .Net 4.6.1, enquanto o código que […]

Erro do Compilador C # 7 – Correspondência de Padrões

Por algum motivo, M1() causa um erro do compilador, enquanto M2() , que faz a mesma coisa, não causa nenhum erro. Alguma ideia do porquê? Usando false == deve ser o mesmo que usar o operador não ! . Uso da variável local não atribuída ‘i’ class Program { static void Main(string[] args) { int […]

Como posso ativar todos os resources do C # 7 no projeto do Visual Studio 2017?

Depois que o Visual Studio 2017 foi lançado, eu queria tentar criar um projeto de console simples com novos resources do C # 7. Eu esperava fazer o download do novo Visual Studio 2017, depois criar um novo projeto de console e usar novos resources do C # 7. Mas eu não posso. Eu posso […]

No C # 7, como posso “rolar meu próprio” tipo Task-like para usar com async?

Um dos resources menos falados do C # 7 é “tipos de retorno asynchronouss generalizados”, descrito pela Microsoft como: Retornar um object Task a partir de methods asynchronouss pode introduzir gargalos de desempenho em determinados caminhos. A tarefa é um tipo de referência, portanto, usá-la significa alocar um object. Nos casos em que um método […]