官术网_书友最值得收藏!

How it works...

The changes that C# 7.0 has made to out variables are not major. They are, however, a major convenience to those developers who use it often. So far in this chapter, we have seen the use of Tuples, pattern matching, and out variables. We can easily combine some of what we have learned to create something truly unique. Consider the use of extension methods, Tuples, and out variables. We can easily create an extension method called ToInt() that has the following implementation:

public static (string originalValue, int integerValue, bool isInteger) ToInt(this string stringValue)
{
var t = (original: stringValue, toIntegerValue: 0, isInt: false);
if (int.TryParse(stringValue, out var iValue))
{
t.toIntegerValue = iValue; t.isInt = true;
}
return t;
}

We create a Tuple literal that will be returned in the event of the TryParse returning false. If the TryParse is true, I set the t.toIntegerValue and t.isInt values. The code that calls the extension method looks as follows:

var (original, intVal, isInteger) = sValue.ToInt();
if (isInteger)
{
WriteLine($"{original} is a valid integer");
// Do something with intVal
}

When you run your console application, you will see that the output is exactly the same as before. This just illustrates the power of the new features in C# 7.0 when combined with each other. Throw some pattern matching into the mix, and we will have a very potent extension method. I'll leave you folks to play around with this some more. There is a lot to discover.

主站蜘蛛池模板: 汝州市| 洞头县| 磐安县| 迁安市| 连江县| 东兴市| 玛曲县| 莎车县| 蓝山县| 深圳市| 潢川县| 桑植县| 光泽县| 萝北县| 西青区| 祁阳县| 大同市| 永平县| 桂阳县| 平乡县| 兴文县| 溧阳市| 奈曼旗| 夹江县| 榆社县| 长汀县| 平江县| 海淀区| 两当县| 虎林市| 濮阳市| 湾仔区| 张家港市| 墨竹工卡县| 绵阳市| 佛学| 遂川县| 桃园县| 霍州市| 武川县| 安新县|