我是C#的初学者,需要帮助创建正确的方法

我是C#的初学者,需要帮助创建正确的方法,c#,visual-studio-2010,class,methods,C#,Visual Studio 2010,Class,Methods,好的,这是我在学校的作业 创建名为CreateVehicle的控制台应用程序 制定一个包含以下信息的车辆类别: a。公司 b。模型 c。MRSP d。创建的车辆数 您的类应该有一个空构造函数和至少一个额外的构造函数来收集创建时的完整信息 有办法买这辆车 创建一种有效的方法,打印出车辆上收集的所有信息 开发一个等级来测试您的车辆等级。在本课程中,请执行以下操作: a。根据以下信息创建以下车辆: Car: Model: MSRP: Aston Martin Vantage

好的,这是我在学校的作业

  • 创建名为CreateVehicle的控制台应用程序
  • 制定一个包含以下信息的车辆类别:

    a。公司

    b。模型

    c。MRSP

    d。创建的车辆数

  • 您的类应该有一个空构造函数和至少一个额外的构造函数来收集创建时的完整信息
  • 有办法买这辆车
  • 创建一种有效的方法,打印出车辆上收集的所有信息
  • 开发一个等级来测试您的车辆等级。在本课程中,请执行以下操作:

    a。根据以下信息创建以下车辆:

    Car:          Model:    MSRP:
    Aston Martin  Vantage   $129,000
    Ford          Fusion    $ 28,678.99
    Honda         Civic EX  $ 18,713.27
    
    b。通过购买本田思域,练习你的购买方法

    c。使用打印方法打印上述车辆的所有相关信息

    d。当你买本田时,打印出你买了本田的事实

  • 加分(10分)。在类中包含一个标志项,该标志项告知创建的车辆是否已购买的状态,并将该状态打印在整体车辆类打印方法中
  • 这是我到目前为止已经想到的代码,但我不确定从这里走到哪里,或者如何修复有语法问题的部分。我不确定我的BuyVehicle方法应该如何工作:

    Program.cs

    using System;
    
    namespace CreateVehicle
    {
        class Program
        {
            static void Main(string[] args)
            {
                Vehicle firstVehicle = new Vehicle("Aston Martin", "Vantage", 129000);
                Console.WriteLine(firstVehicle.ToString());
    
                firstVehicle.BuyVehicle(true);
                Console.WriteLine("You bought a {0}", firstVehicle.Model);
    
                Vehicle secondVehicle = new Vehicle("Ford", "Fusion", 28678.99);
                Console.WriteLine(secondVehicle.ToString());
    
                Vehicle thirdVehicle = new Vehicle("Honda", "Civic EX", 18713.27);
                Console.WriteLine(thirdVehicle.ToString());
    
            }
        }
    }
    
    Vehicle.cs

    using System;
    
    namespace CreateVehicle
    {
        class Vehicle
        {
            public string companyName;
            private static int totalVehicles = 0;
            private string mModel;
            private string mMSRP;
    
            public Vehicle()
            {
                companyName = "Not assigned";
                mModel = "Not assigned";
                mMSRP = 0;
    
                totalVehicles++;
            }
    
            public Vehicle(string companyName, string model, double price)
            {
                this.companyName = companyName;
                mModel = model;
                mMSRP = price;
    
                totalVehicles++;
            } 
    
            public string Model
            {
                get
                {
                    return mModel;
                }
            }
    
            public decimal MSRP
            {
                get
                {
                    return mMSRP;
                }
                set
                {
                    if (value >= 0)
                    {
                        mMSRP = value;
                    }
                    else
                    {
                        mMSRP = 0;
                    }
                }
            }
    
           public string BuyVehicle(Boolean buy)
            {
                if (buy == true)
                {
                    return mModel;
                }
                else
                {
                    return "";
            }
    
            public override string ToString()
            {
                return "Vehicle Data:  \n\t" +
                       "Company Name:   " + companyName + "\n\t" +
                       "Model:          " + mModel + "\n\t" +
                       "MSRP:           " + mMSRP.ToString("C") + "\n\t" +
                       "Total vehicles: " + totalVehicles + "\n";
            }
        }
    }
    

    看一下mMSRP的变量声明?您已将其声明为字符串,但随后将其分配给0。然后,您的构造函数希望返回一个双精度值,然后在访问器中,您希望返回一个十进制值。这就是为什么我告诉你要逐步检查你的代码。不仅与vs,但你的眼睛跟随它的路径,它的声明。如果您仍然有错误,请告诉我错误是什么。这个网站的目的是帮助你指明方向,而不是给你答案。你会学到更多的东西,你自己去弄清楚,你的满足感也会更多。

    我完全同意zeencat的观点。真正学到东西的唯一方法是自我发现。这样做也会让你在前进的道路上获得更多未知的东西和最佳实践。考虑到您提到自己是初学者,您的代码看起来并没有那么糟糕,但我确实注意到您在课堂上应该注意的一些事情:

    举一个例子:您的类属性(publicstringcompanyname;)永远不应该是公共的,因为这允许最终用户有意或无意地破坏代码。这些字段应始终是私有的。此外,在创建类属性时使用匈牙利符号并包含下划线来表示字段访问器状态(public、private等)通常是一种好的做法

    例如,公司名称;或"strMSRP";

    这样做可以让您知道这是一个私有字符串变量。当您查看代码以便稍后进行调试时(正如zeencat指出的那样),使用strmMsrp发现“类型不匹配”会容易得多

    最后,声明变量后,初始化变量总是很好的:

    例如,字符串myString=“”;或双倍myNumber=0.0;或者bool isTrue=true;等等

    这里有一个链接,指向我用来入门的C#基础教程系列。三年后,他们仍然是我见过的最好的。所教的每一课和给出的每一个例子都是行业最佳实践


    祝你好运

    你应该把这个问题的代码是广泛的-我们不会为你做的工作。要获得更好的回答,请编辑问题并准确指出您遇到的编译器错误/警告,或者您遇到的问题是哪一步。每个问题都应该有自己的问题。在BuyVehicle方法中,有些问题用红色下划线标出。我并不认为它太宽泛,因为我编写了99%的代码,并且不理解我的方法应该如何工作。我不知道在else语句中该方法返回什么。当我尝试运行它时,我得到“无法隐式地将类型'int'转换为'string'”etcI必须同意Anders Abel的意见,没有人会为您做这项工作。如果他们这样做了,你真的永远也学不到,最好的学习方法是自己动手,并且只接受指导,告诉你在哪里寻找答案。非常有帮助。非常感谢。我会确保所有这些(除了现在的符号。我只是按照他们教我的方式来做。)很高兴知道另一种方法,因为我可能很快就需要这么做。谢谢你的链接。救了它。