dichiarazioni in linea per out
parametri è una nuova funzione suggerita in C# che potrebbe essere standard un giorno, vedere ad es. Probable C# 6.0 features illustrated, sezione 9. Il previsto/proposta di sintassi:
int.TryParse("5", out int x); // this declares (and assigns) a new variable x
Edit: Questo out
sintassi variabile è stata poi inclusa in C# 7.0 (Visual Studio 2017); puoi anche usare out var x
.
Aggiunta: le persone escono con metodi di estensione divertenti. Ho provato a fare un generico:
public delegate bool TryParser<TResult>(string s, out TResult result);
public static class FunExtensions
{
public static T TryParse<T>(this string str, TryParser<T> tryParser)
{
T outResult;
tryParser(str, out outResult);
return outResult;
}
}
Questo può essere utilizzato in questo modo:
var x = "5".TryParse<int>(int.TryParse);
var y = "01/01".TryParse<DateTime>(DateTime.TryParse);
var z = "bad".TryParse<decimal>(decimal.TryParse);
e così via. Speravo il compilatore dedurre T
da uso, in modo che si potrebbe dire semplicemente:
var x = "5".TryParse(int.TryParse); // won't compile
ma sembra si deve specificare in modo esplicito il tipo di argomento del metodo.
fonte
2014-11-04 14:04:13
può avvolgere in una chiamata di metodo privato? –
come posso farlo? –