【问题标题】:Line Suppression State Error CS1503 Argument 1: cannot convert from 'int' to 'System.Threading.ParameterizedThreadStart' [duplicate]线路抑制状态错误 CS1503 参数 1:无法从“int”转换为“System.Threading.ParameterizedThreadStart”[重复]
【发布时间】:2020-11-13 13:46:29
【问题描述】:
using System;
using System.Threading;

namespace assignment_1_q2
{
    class program
    {
        public static int SumNumbers(int s, int e, int p)
        {
            switch (p)
            {
                case 1:



                    int nnsum = 0;
                    for (int i = s; i <= e; i++)
                    {
                        nnsum = nnsum + i;

                    }
                    Console.WriteLine("sum of natural numbers = {0}", nnsum);
                    break;

                case 2:


                    int nnsum1 = 0;
                    for (int i = s - 1; i <= e; i = i + 2)
                    {
                        nnsum1 = nnsum1 + i;

                    }
                    Console.WriteLine("sum of natural even numbers = {0}", nnsum1);
                    break;

                case 3:



                    int nnsum2 = 0;
                    for (int i = s; i <= e; i = i + 2)
                    {
                        nnsum = nnsum2 + i;

                    }
                    Console.WriteLine("sum of natural odd numbers = {0}", nnsum2);
                    break;
                default:
                    Console.WriteLine("no priority matches");
                    break;

            }
            return 0;
        }
        static void main(string[] args)
        {
            Thread t1 = new Thread(SumNumbers(1, 10, 1));
            Thread t2 = new Thread(SumNumbers(1, 10, 2));
            Thread t3 = new Thread(SumNumbers(1, 10, 3));
            t1.Start();
            t2.Start();
            t3.Start();

        }
    }
}

我只是通过将参数传递给方法“SumNumbers”来得到这个错误。

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以使用 lambda 表达式将参数传递给您的函数

    Thread t1 = new Thread(() => SumNumbers(1, 10, 2));
    Thread t2 = new Thread(() => SumNumbers(1, 10, 2));
    Thread t3 = new Thread(() => SumNumbers(1, 10, 3));
    

    请看这个答案

    ThreadStart with parameters

    【讨论】:

    • 非常感谢您帮助我...
    • 先生,您能用我的代码解释一下委托的使用吗?
    • 问题出在参数的传递上,Thread构造函数将委托ParameterizedThreadStart作为参数,只允许将单个参数(对象类型)传递给start方法,这是一个限制,但我们可以使用 lambda 表达式将所有参数传递给函数,在本例中为函数“SumNumbers” PS:我将更新我的答案。请看这个答案stackoverflow.com/questions/1195896/threadstart-with-parameters
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多