Ima*_*mad 3 c# extension-methods
我刚刚收集了一些知识,似乎很难理解以下情况.
我有2节课.一个有Main方法,另一个有两个Extension Methods如下.
有主要的类
class Program
{
static void Main(string[] args)
{
string uuu = "214";
Console.WriteLine(uuu.SplitMe().AddMe());
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
扩展类
static class ExtensionClass
{
public static char[] SplitMe(this string value)
{
return value.ToCharArray();
}
public static long AddMe(this char[] value)
{
int sum = 0;
for (int i = 0; i<value.Length ; i++)
{
sum += Convert.ToInt32(value[i]);
}
return sum;
}
}
Run Code Online (Sandbox Code Playgroud)
我期待着,按照以下方针行事
Console.WriteLine(uuu.SplitMe().AddMe());
Run Code Online (Sandbox Code Playgroud)
的输出uuu.SplitMe()是char[]的{"2","1","4"}和完整线的结果将被打印为7(2 + 1 + 4),但它是151我的控制台上.你能详细说明它的计算方法吗?
谢谢.
问题是System.Char值'2'的整数值为50,而不是2.因此,您正在求和{'2','1','4'},其值为{50, 49, 52},然后变为151.
您可以通过以下方式将字符转换为与其值匹配的数字:
sum += int.Parse(value[i].ToString());
Run Code Online (Sandbox Code Playgroud)
但是,如果传递包含非数字字符的字符串,则会引发异常.