Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调试此错误:“quot;无法将Lambda表达式转换为字符串";?_C# - Fatal编程技术网

C# 如何调试此错误:“quot;无法将Lambda表达式转换为字符串";?

C# 如何调试此错误:“quot;无法将Lambda表达式转换为字符串";?,c#,C#,我试图调试以下代码,但它不起作用 我上传这张照片 这是我的代码: using System; using System.Text; using System.IO; using System.Linq; using System.Text.RegularExpressions; class Program { static void Main() { string input = "code1,code2,#c55+35+97#g,coden,code

我试图调试以下代码,但它不起作用

我上传这张照片

这是我的代码:

using System;
using System.Text;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {   
         string input = "code1,code2,#c55+35+97#g,coden,code3,code4,#c44+25+07#gcoden";

         string output = Regex.Replace(
             input, 
             "#c(.*?)#g", 
             m => "#c" + m.Groups[1].Value.Split('+').Sum(int.Parse) + "#");

         Console.WriteLine(output);    
    }
}
以下是我遇到的错误:

错误1:

“int.Parse(string)”具有错误的返回类型(CS0407)——

错误2:

以下方法或属性之间的调用不明确:“System.Linq.Enumerable.Sum(System.Collections.Generic.IEnumerable,System.Func)”和“System.Linq.Enumerable.Sum(System.Collections.Generic.IEnumerable,System.Func)”(CS0121)

错误3:-无法将m“lambda”转换为字符串

无法将lambda表达式转换为类型“string”,因为它不是委托类型(CS1660)


您需要使用显式lambda,而不是
int.Parse()

注意,我将
int.Parse
替换为
v=>int.Parse(v)
。样品

有趣的是,它按照c#6.0中的要求编译和工作:

样品。我不确定该变更记录在何处,可能记录在:

过载解决方案有许多小的改进,这 可能会导致更多的事情按照你期望的方式进行 让他们去。这些改进都与“更好”有关——即 编译器决定两个重载中哪一个对于给定的 争论

一个你可能会注意到这一点的地方(或者更确切地说,停止注意一个问题) 问题!)是在选择接受可为空值的重载时 类型。另一种是在传递方法组时(与lambda相反) 以重载期望的委托。细节不值得详述 在这里–只是想让你知道


请将所有错误消息复制到问题中。
**m**
是您试图在代码中突出显示
m
,还是实际代码?是我建议您在。您没有传入正确类型的参数。正如错误所说,它需要的是一个字符串,而不是lambda表达式。@dbc我在错误3中留下了
m
,因为我觉得这样可以更清楚地显示错误所指的lambda和lambda行。我认为它不应该被删掉。该语句可能应该使用
m
重新措辞,或者应该完全删除整个句子,因为它目前没有向其正下方的错误语句添加任何额外信息。
    string output = Regex.Replace(
        input,
        "#c(.*?)#g",
        m => "#c" + m.Groups[1].Value.Split('+').Sum(v => int.Parse(v)) + "#");
    string output = Regex.Replace(
        input,
        "#c(.*?)#g",
        m => "#c" + m.Groups[1].Value.Split('+').Sum(int.Parse) + "#");