gpt4 book ai didi

C# 无法将匿名方法转换为类型 int,因为它不是委托(delegate)类型

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:06 26 4
gpt4 key购买 nike

我正在尝试在 reg 替换中使用匿名方法将每个字符转换为字母表的下一个字母。我收到错误消息“无法将匿名方法转换为 int 类型,因为它不是委托(delegate)类型”。下面是代码。

using System;
using System.Text.RegularExpressions;

namespace LetterChange
{
class Program
{
public static string LetterChanged(string str) {
string changed = null;

changed = Regex.Replace(str, @"[a-zA-z]",
delegate(char c) { if (c == 'z' || c == 'Z') return 'A'; else convert.ToChar(Convert.ToInt32(c));});
return changed;
}
static void Main(string[] args)
{

Console.WriteLine(LetterChanged("hello*3"));
Console.Read();
}
}
}

最佳答案

Replace 方法接受一个MatchEvaluator:

 string MatchEvaluator(Match match)

所以它需要一个 Match ,它有一个 Value 属性代表匹配的字符串,并返回一个字符串:

var changed = Regex.Replace(str, @"[a-zA-z]",
delegate (Match c) {
if (c.Value == "z" || c.Value == "Z")
{
return "A";
}
else
{
return Convert.ToChar(Convert.ToInt32(c)).ToString();
}
});

此外,我会使用 lambda 来推断参数类型,而不必编写类型,不再推荐使用 delegate 语法:

var changed = Regex.Replace(str, @"[a-zA-z]", c => { … });

关于C# 无法将匿名方法转换为类型 int,因为它不是委托(delegate)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48979448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com