C#打印出方法中的参考字符串

C#打印出方法中的参考字符串,c#,C#,我如何实现以下目标: public void PrintText(ref string currentBid) { Console.WritleLine(currentBid); } 目前,我发现以下错误: Cannot use ref or out parameter in annonymous method... 编辑: 以下是完整的方法: public static void writeToFileUK(string FolderName, ref string currentBid)

我如何实现以下目标:

public void PrintText(ref string currentBid)
{
Console.WritleLine(currentBid);
}
目前,我发现以下错误:

Cannot use ref or out parameter in annonymous method...
编辑:

以下是完整的方法:

public static void writeToFileUK(string FolderName, ref string currentBid)
{
    TimeSpan start = new TimeSpan(08, 00, 00);
    TimeSpan end = new TimeSpan(16, 30, 00);

    var timer = new System.Threading.Timer((e) =>
    {
        try
        {
            string fileName = @"C:\Users\Documents\Stocks\" + FolderName + "\\" + DateTime.Now.ToString("yyy-MM-dd") + ".txt";
            if (!File.Exists(fileName))
                File.WriteAllText(fileName, "Time, Bid" + Environment.NewLine);

            string text = DateTime.Now.ToString("HH-mm-ss") + ", " + currentBid;

            if (DateTime.Now.TimeOfDay >= start && DateTime.Now.TimeOfDay <= end)
            {
                using (StreamWriter stream = new StreamWriter(fileName, true))
                {
                    stream.WriteLine(text);
                }
            }
        }
        catch { }

    }, null, 0, 1000);

    Console.Read();
}


    try
    {
        Task.Run(() => writeToFileUK("HSBC", ref CurrentHSBCBid));
    }
    catch { }
} 捕获(例外情况除外) { 控制台写入线(例如StackTrace); }

}不要通过引用传递字符串。您没有改变变量,因此没有理由通过引用传递它。当您按值传递它(默认行为)时,在匿名方法中使用它不会有任何问题,因为匿名方法不支持使用
ref
参数调用方法。

将引用字符串传递到匿名方法中是不可能的,而是传入一个类,该类维护您希望定期更新的字符串的所有权

class BidUpdater
{
    private string _currentBid;
    public string CurrentBid { get { return currentBid; } }

    private void updateBid() 
    {
        /* update logic goes here */;
    }
}
然后

其中myBidUpdater是
BidUpdater
的实例

然后将结果的用法替换为

string text = DateTime.Now.ToString("HH-mm-ss") + ", " + myBidUpdater.CurrentBid;

这也比通过引用传递更好,因为负责更新出价的对象不会放弃对它的控制(破坏加密)。

请发布所有代码。此外,为什么需要
ref
?有没有理由不让方法返回更新的字符串?这将是一个更简单的解决方案。@JBKing因为onOverride不是由代码直接调用的,但据我所知,数据是由lightstreamer发送的,而lightstreamer会调用该方法,因此我找不到一种方法来获取值what lightstreamer?这不在发布的代码中,因此我们应该如何知道您的问题的这一部分?请给我们足够的上下文来给出有意义的答案。@user4420358您也没有在该片段中对其进行变异。你只是在读它的价值。当然,如果你想对它进行变异,那么你就不能,正如错误信息告诉你的那样。您不能通过引用传递封闭变量。@user4420358再次说明,您实际上并没有对其进行变异,并且再次说明,即使您愿意,您也不能,原因与您收到的错误消息中所述的完全相同。@user4420358我确实回答了您的问题。您可以通过不通过引用传递变量来实现代码的功能。@user4420358您可能需要在关键字ref上进行msdn google搜索,搜索它的含义以及它在作用域方面的工作方式您是否考虑过使用
属性
来代替..?@user4420358为什么不将一个类传递到您的匿名方法中将当前字符串作为属性或其他内容公开?在这种情况下,传递ref字符串是不可能的,即使是这样,也不是一个好主意——传递消费者不拥有的可变资源会以一种非常糟糕的方式破坏封装。
Task.Run(() => writeToFileUK("HSBC", myBidUpdater));
string text = DateTime.Now.ToString("HH-mm-ss") + ", " + myBidUpdater.CurrentBid;