Встроенные объявления для out
params - это новая предлагаемая функция на C#, которая может быть стандартной в один день, см., Например, Probable C# 6.0 features illustrated, раздел 9. Ожидаемый/предложенный синтаксис:
int.TryParse("5", out int x); // this declares (and assigns) a new variable x
Edit: Эта переменная out
синтаксис был в конечном счете включен в C# 7.0 (Visual Studio 2017); вы также можете использовать out var x
.
Дополнение: Люди придумывают интересные методы расширения. Я попытался сделать один общий:
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;
}
}
Это может быть использовано, как это:
var x = "5".TryParse<int>(int.TryParse);
var y = "01/01".TryParse<DateTime>(DateTime.TryParse);
var z = "bad".TryParse<decimal>(decimal.TryParse);
и так далее. Я надеялся, что компилятор будет выводить T
от использования, так что можно было бы просто сказать:
var x = "5".TryParse(int.TryParse); // won't compile
, но в этом случае вы должны явно указать тип аргумента метода.
Можно обернуть его в частном вызове метода? –
как я могу это сделать? –