2009-07-31 12 views

risposta

25

Con VS2010 RC, sono riuscito a creare un'applicazione .NET 3.5 che utilizza parametri facoltativi in ​​C#.

Quindi sì, è tutto sullo zucchero sintattico.

2

Non ho VS2010 installato qui per controllare, ma credo che questo sarebbe puramente una funzionalità linguistica, e quindi dovrebbe essere utilizzabile indipendentemente dal framework che viene preso di mira.

Modifica: Osservando questo link (e alcuni altri), sembra che i parametri facoltativi compili agli argomenti del metodo con un attributo [opt] nel il. Non so se questo parametro esistesse nelle precedenti versioni del clr, ma comunque la mia ipotesi sarebbe che lo faccia.

+0

Sì, mi verrebbe da pensare che questo è il caso , ma non voglio passare attraverso l'installazione di VS2010 quando non è ancora in RTM se non me lo dà. –

+2

C# 4.0 riutilizza l'attributo che VB utilizza a tale scopo, quindi è stato intorno a partire da 1.0. –

0

VB.NET dispone di parametri facoltativi se si desidera utilizzare i parametri facoltativi in ​​.NET 3.5.

+1

Sì, lo so. Amo i parametri opzionali ma odio VB. ;) Inoltre, avere un'app in 2 lingue è una sorta di kludge se hai bisogno solo di materiale VB per una o due classi. –

13

VS 2010 supporta i parametri facoltativi in ​​C# per le soluzioni .NET 3.5. Un avvertimento, tuttavia, è che il compilatore della riga di comando segnalerà errori.

Quindi, se si dispone di build automatizzati in esecuzione, - utilizzando NANT o qualcos'altro utilizzando il compilatore della riga di comando - le build falliranno.

+1

In questo modo, è ovvio modificare la build automatizzata per utilizzare MSBuild che si trova nella 4.0 Framework Directory. – Jeff

+0

Sto affrontando lo stesso problema e in effetti non funziona quando si esegue msbuild utilizzando la riga di comando. Sto usando già il msbuild nella directory framework 4.0. Ho anche provato il parametro /toolsversion:4.0 e /p:TargetFrameworkVersion=v4.5 ma senza fortuna! Continuo a ricevere l'errore CS1644! Qualche idea? – papadi

5

Come Jon Skeet, stavo ottenendo che "parametro opzionale" Feature "non può essere utilizzato perché non fa parte delle specifiche del linguaggio 3.0 C#". Tuttavia, nella versione RTM di Visual Studio è possibile selezionare la versione della lingua su "predefinito" in Proprietà progetto-> Build-> Avanzate. Ha funzionato per me.

3

È possibile utilizzare i parametri facoltativi e denominati in un framework di destinazione di una versione precedente a condizione che gli assembly siano compilati all'interno di un ambiente di sviluppo per v4 (ad esempio VS2010). Ma si dovrebbe essere consapevoli della fase di compilazione o pubblicazione di siti Web in questo caso verrà utilizzato il compilatore del framework di destinazione. E poiché i compilatori dei vecchi framework non capiscono la sintassi dei params opzionali e nominati, si verificheranno errori del compilatore.

+0

Penso che quello che Frans menziona sia un punto importante. Se si compila un'applicazione desktop che chiama un metodo che utilizza parametri opzionali con un framework mirato di una versione precedente, diciamo 2.0, all'interno di VS2012, tutto va bene. Ma non sarai in grado di creare un'applicazione web con un framework mirato di una versione precedente che chiama lo stesso metodo. – heuristican

3

Vai al progetto proprietà -> Crea Tab -> pulsante 'Avanzate' click -> versione in lingua impostata su 'default' -> salva -> essere felice;)

Problemi correlati