Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有给出与所需形式参数对应的参数-这意味着什么?_C# - Fatal编程技术网

C# 没有给出与所需形式参数对应的参数-这意味着什么?

C# 没有给出与所需形式参数对应的参数-这意味着什么?,c#,C#,我试图调用该方法,但由于某些原因,它无法工作 有人能告诉我如何建立一个更好的方法吗 namespace ObjectsLifeTime { class Program { static void Main(string[] args) { Car myCar = new Car(); myCar.Make = "Ford"; myCar.Model = "Something"

我试图调用该方法,但由于某些原因,它无法工作 有人能告诉我如何建立一个更好的方法吗

namespace ObjectsLifeTime
{
    class Program
    {
        static void Main(string[] args)
        {

            Car myCar = new Car();
            myCar.Make = "Ford";
            myCar.Model = "Something";
            myCar.Year = 2010;
            myCar.Colour = "Blue";

            Console.WriteLine(myCar.Stats());

        }


        class Car
        {
            public string Make { get; set; }
            public string Model { get; set; }
            public int Year { get; set; }
            public string Colour { get; set; }

            public static string Stats(Car car)
            {
                string restart = "false";
                do
                {
                    restart = "false";
                    Console.WriteLine("Press a to get the Make of the car");
                    Console.WriteLine("Press s to get the Model of the car");
                    Console.WriteLine("Press d to get the Year of the car");
                    Console.WriteLine("Press f to get the Colour of the car");
                }
                while (restart == "true");
                string UserInput = Console.ReadLine();

                if (UserInput == "a")
                {
                    string UserOutput = car.Make;
                    return UserOutput;
                }
                if (UserInput == "s")
                {
                    string UserOutput = car.Make;
                    return UserOutput;
                }
                if (UserInput == "d")
                {
                    string UserOutput = car.Make;
                    return UserOutput;
                }
                if (UserInput == "f")
                {
                    string UserOutput = car.Make;
                    return UserOutput;
                }
                else
                {
                    restart = "true";
                    string UserOutput = "I did not understand that";
                    return UserOutput;
                }
            }
        }
    }
}

下面的代码应该可以解决您的问题

static void Main(string[] args)
        {

            Car myCar = new Car();
            myCar.Make = "Ford";
            myCar.Model = "Something";
            myCar.Year = 2010;
            myCar.Colour = "Blue";

            Console.WriteLine(myCar.Stats());
            Console.ReadKey();

        }


        public class Car
        {
            public string Make { get; set; }
            public string Model { get; set; }
            public int Year { get; set; }
            public string Colour { get; set; }

            public  string Stats()
            {
                string restart = "false";
                do
                {
                    restart = "false";
                    Console.WriteLine("Press a to get the Make of the car");
                    Console.WriteLine("Press s to get the Model of the car");
                    Console.WriteLine("Press d to get the Year of the car");
                    Console.WriteLine("Press f to get the Colour of the car");
                }
                while (restart == "true");
                string UserInput = Console.ReadLine();

                if (UserInput == "a")
                {
                    string UserOutput = Make;
                    return UserOutput;
                }
                if (UserInput == "s")
                {
                    string UserOutput = Model;
                    return UserOutput;
                }
                if (UserInput == "d")
                {
                    string UserOutput = Year.ToString();
                    return UserOutput;
                }
                if (UserInput == "f")
                {
                    string UserOutput = Colour;
                    return UserOutput;
                }
                else
                {
                    restart = "true";
                    string UserOutput = "I did not understand that";
                    return UserOutput;
                }
            }
        }

您的Stats函数是静态的。 如果您是故意这样做的,那么您可以通过类名Car.Stats访问它


如果您想从Car类的每个实例访问它,那么您需要使一个常规函数删除静态…

在面向对象编程中,类是某种东西的模板。。。我喜欢汽车。 Car是模板,但沃尔沃就是Car的一个例子。 沃尔沃是用汽车的模板制造的,但它只是一个单一的例子。 类car中定义的所有属性和函数都可以通过实例访问。 当谈到静态时,我们真正想说的是,在某些情况下,我们希望能够使用与类实例无关的函数或属性。。让我们假设我们有一流的汽车

在car类中,我们创建一个名为gasPrice的静态成员

public class Car 
{ 
   public static double gasPrice =5;
   public string Make { get; set; } 
   public string Model { get; set; } 
   public int Year { get; set; } 
   public string Colour { get; set; } 
} 
现在该属性在所有car实例之间共享。。。沃尔沃本田什么都有。。。您不能仅为其中一个进行编辑。 由类级别设置的gasPrice值。。。现在我们可以感觉到,我们无法从其中一个实例访问它。。。 我们只能从类名访问它,因为它与类相关


干杯

如果您更多地解释您正在做的事情以及失败的具体原因,而不是重复您的文本以满足字符数要求,该怎么办;可能应该是Console.WriteLineCar.StatsmyCar;或者,如果您不想进行更改,请改为将公共静态字符串statsar car{更改为公共字符串Stats{var car=this;。谢谢您的帮助,但是静态实际上做了什么?请您举个例子——我所看到的任何地方都太模糊或过于复杂