我有一个动作

Action<string> removeTitle = source => { source = RemoveTitle(source); };


我调用

string name = "MR JOHN DOE"
removeTitle(name);


但不会更改变量name

VS(可能是Resharper)在lambda分隔符后表示source的“在任何执行路径中均未使用分配的值”。

我在这里做错了什么?

最佳答案

字符串是不可变的..因此,您的引用将在lambda范围内重新创建。这是一个similar issue to this question

如果要修改它,则需要通过Func<T1, T2>委托返回它,但是除非创建自己的委托类型,否则不能使用refout(如该问题所建议)(注意:通过方法分组将其缩短):

Func<string, string> removeTitle = RemoveTitle;

// ...
name = removeTitle(name);

关于c# - Action <T>将值分配给变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24028506/

10-16 04:51