我有一个动作
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>
委托返回它,但是除非创建自己的委托类型,否则不能使用ref
或out
(如该问题所建议)(注意:通过方法分组将其缩短):
Func<string, string> removeTitle = RemoveTitle;
// ...
name = removeTitle(name);
关于c# - Action <T>将值分配给变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24028506/