Você pode usar parâmetros opcionais no código de destino .NET 3.5?

Eu estou olhando para escrever uma biblioteca que usa o novo recurso de parâmetros opcionais do C # 4.0, mas eu quero direcioná-lo para a versão 3.5 do framework. Isso é possível?

Os parâmetros opcionais são açúcar sintático da mesma maneira que os methods de extensão?

Com o VS2010 RC, consegui criar um aplicativo .NET 3.5 que usa parâmetros opcionais em C #.

Então sim, é tudo sobre açúcar sintático.

O VS 2010 suporta parâmetros opcionais em C # para soluções .NET 3.5. Uma ressalva, no entanto, é que o compilador da linha de comando relatará erros.

Portanto, se você tiver compilações automatizadas na execução, usando NANT ou outra coisa usando o compilador de linha de comando, suas compilações falharão.

Como Jon Skeet, eu estava recebendo “O parâmetro opcional ‘do recurso’ não pode ser usado porque não faz parte da especificação da linguagem 3.0 C #”. No entanto, na versão RTM do Visual Studio, você pode selecionar a versão do idioma para “padrão” em Propriedades do projeto-> Criar-> Avançado. Isso funcionou para mim.

Você pode usar parâmetros nomeados e opcionais em uma estrutura de destino de uma versão anterior, desde que os assemblies sejam criados em um ambiente de desenvolvimento para a v4 (fe VS2010). Mas você deve estar ciente da compilation em tempo de execução ou da publicação de sites. Nesse caso, o compilador da estrutura de destino será usado. E como os compiladores das estruturas mais antigas não entendem a syntax dos parâmetros opcionais e nomeados, isso resulta em erros do compilador.

Vá para as propriedades do projeto -> Build Tab -> clique no botão ‘Advanced’ -> configure a versão do idioma para ‘default’ -> save -> seja feliz;)

Eu não tenho VS2010 instalado aqui para verificar, mas acredito que isso seria puramente um recurso de linguagem e, portanto, deve ser utilizável, independentemente da estrutura a ser direcionada.

Edit: Olhando para este link (e alguns outros), parece que os parâmetros opcionais compilar para argumentos de método com um atributo [opt] no il. Eu não sei se esse parâmetro existia nas versões anteriores do clr, mas ainda acho que seria.

VB.NET tem parâmetros opcionais se você quiser usar parâmetros opcionais no .NET 3.5.