C#在方法中打印出ref string

use*_*358 -8 c#

我怎样才能实现以下目标:

public void PrintText(ref string currentBid)
{
Console.WritleLine(currentBid);
}
Run Code Online (Sandbox Code Playgroud)

目前,我收到以下错误:

Cannot use ref or out parameter in annonymous method...
Run Code Online (Sandbox Code Playgroud)

编辑:

这是完整的方法:

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 { }
Run Code Online (Sandbox Code Playgroud)

这个方法将整天每秒调用一次,我希望它将ref字符串打印到文本文件中

public override void OnUpdate(int itemPos, string itemName, IUpdateInfo update)
{
    try
    {
        var str = GetL1Prices(itemPos, itemName, update);
        var updateTime = update.GetNewValue("UPDATE_TIME");
        var bid = update.GetNewValue("BID");

        if(itemName == "L1:IX.D.DOW.DAILY.IP")
            Program.CurrentDOWBid = bid;
Run Code Online (Sandbox Code Playgroud)

} catch(Exception ex){Console.WriteLine(ex.StackTrace); }
}

Ser*_*rvy 6

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

  • @ user4420358您也没有在该片段中改变它.你只是在读它的价值.当然,如果你*想*改变它,那么你就不能,就像你的错误信息告诉你的那样.您不能通过引用传递已关闭的变量. (3认同)
  • @ user4420358同样,你实际上并没有改变它,而且,你也不能,即使你想要,也不能,因为你得到的错误信息中所述的确切原因. (3认同)
  • @ user4420358为什么不将一个类传递给你的匿名方法,该方法将当前字符串公开为属性或什么?在这种情况下传递ref字符串是不可能的,即使它是,它也不是一个好主意 - 传递可变资源,消费者不会以非常糟糕的方式破坏封装. (3认同)
  • @ user4420358也许你需要在关键字ref上做一个msdn google搜索,它是什么意思以及它在范围方面如何工作你是否考虑过使用`properties`代替..? (2认同)