【解決方法】匿名メソッド、ラムダ式、またはクエリ式内で ref または out パラメーター ‘strClientId’ を使用することはできません

プログラミングQA


匿名メソッド、ラムダ式、またはクエリ式内で ref または out パラメーター ‘strClientId’ を使用することはできません

C#
static BackgroundWorker worker;
        static void Main(string[] args)
        {
            worker = new BackgroundWorker();
            worker.DoWork += worker_DoWork;
            
            worker.RunWorkerAsync();
            Console.ReadLine();
        }
        static void worker_DoWork(object sender,DoWorkEventArgs e)
        {
            string strClientId = "2211";
            Authenticate(ref strClientId);
            //whatever You want the background thread to do...
        }
        static void Authenticate(ref string strClientId)
        {
            Timer timer = new Timer(500);
            //Error in this line 
            //Cannot use ref or out parameter 'strClientId' inside an anonymous method,lambda expression or query expression
            timer.Elapsed += (sender, e) => Authenticates_Timer(sender, e,Func<strclientid>);
            //timer.Elapsed += Authenticates_Timer();
            timer.Start();
        }
        static void Authenticates_Timer(object sender, ElapsedEventArgs e, ref string strClientId)
        {
            //want to use variable here
            strClientId = "";
        }</strclientid>

解決策 1

あなたにはできないからです。
このようなエラー メッセージが表示された場合は、Google で検索してください。コードに固有のものをすべて取り出して、残りを Google で検索してください。 匿名メソッド、ラムダ式、またはクエリ式内で ref または out パラメーターを使用することはできません[^]

一般的に、あなたはそれに会う最初の人ではないことがわかります…

トップヒットを見ると(2009年からのSO): http://stackoverflow.com/questions/1365689/cannot-use-ref-or-out-parameter-in-lambda-expressions[^] それができない理由を説明します。 他の方法を見つける必要があります – なぜそれをしたいのか私にはわからないので、私にはどうすることもできません!

コメント

タイトルとURLをコピーしました