C# 4.0 如何克服此错误'Vehicle.CreateObject(int,string,int,string)';:并非所有代码路径都返回值

C# 4.0 如何克服此错误'Vehicle.CreateObject(int,string,int,string)';:并非所有代码路径都返回值,c#-4.0,C# 4.0,/*我是C#的初学者。我试图创建一个简单的车辆细节。我的约束是-我希望这些方法包含在我的程序中。1-公共车辆CreateObject(int lNo,String bName),但在编译时-错误CS0161:`Vehicle.CreateObject(int,String,int,String)':不是所有代码路径都返回值,我不确定调用公共字符串DisplayDetails(Vehicle v)时会发生什么。我知道那里的方法是什么。但我不明白(v车)在那个地方发生了什么*/ using Syst

/*我是C#的初学者。我试图创建一个简单的车辆细节。我的约束是-我希望这些方法包含在我的程序中。1-公共车辆CreateObject(int lNo,String bName),但在编译时-错误CS0161:`Vehicle.CreateObject(int,String,int,String)':不是所有代码路径都返回值,我不确定调用公共字符串DisplayDetails(Vehicle v)时会发生什么。我知道那里的方法是什么。但我不明白(v车)在那个地方发生了什么*/

using System;

public class Vehicle
{
    public int licenseNo;
    public String brandName;
    public int noOfWheels;
    public string color;

    public Vehicle CreateObject( int lNo, String bName,int wheels, String colour)
    {
        licenseNo = lNo;
        brandName = bName;
        noOfWheels = wheels;
        color = colour;
    }

    public String DisplayDetails(Vehicle v)
    {
        Console.WriteLine(licenseNo);
        Console.WriteLine(brandName);
        Console.WriteLine(noOfWheels);
        return color;
    }
}

public class Program
{
    public static void Main()
    {
        Vehicle v1 = new Vehicle();
        Console.WriteLine("Enter license number,brand name, no of wheels and color for vehicle");
        v1.licenseNo = Convert.ToInt32(Console.ReadLine());
        v1.brandName = Console.ReadLine();
        v1.noOfWheels = Convert.ToInt32(Console.ReadLine());
        v1.color = Console.ReadLine();
        v1.DisplayDetails();
        Console.WriteLine(v1.color);
    }
}

这是因为在
CreateObject
方法中没有返回值

如果你想让一个方法不返回一个值(这里你没有,因为它没有多大意义),你必须说
public void CreateObject(等等)
。您正在声明要返回
车辆
对象,但未能返回

这就是说,你的整个概念是错误的。您不想在此处使用
CreateObject
;你需要一个构造函数。关于构造函数。我建议你去看看

也就是说,只要去掉
CreateObject
,那么:

public Vehicle (int lNo, String bName,int wheels, String colour)
{ //etc.

这将使构造函数具有正确的语法<如果您正在使用Interop创建COM对象,并且您在这里没有尝试这样做,则可以使用code>CreateObject。

我已经冒昧地清理了您的缩进。在以后的文章中,请正确缩进和分隔代码。如果您的代码中根本没有任何缩进,那么阅读起来就困难多了,如果您以这种方式折磨读者,您就不太可能得到答案。:)谢谢你,博布罗德斯!!供您考虑。我已经看过你附在这里的文件了。但是在我的程序中,我需要使用(publicvhicle CreateObject(intlno,stringbname,intwheels,stringcolor)——这个方法创建并返回一个Vehicle对象。我对这方面没有深入的了解。我想学习如何为此编程。如果你不是我的,请让你解释。@mohamedimran你从哪里得到你的要求?首先你说你需要使用
CreateObject
,然后你说你不知道它。如果您不了解它,那么如何知道需要使用
CreateObject
using System;

public class Vehicle
{
    public int licenseNo;
    public String brandName;
    public int noOfWheels;
    public string color;

    public Vehicle CreateObject(int lNo,String bName,int wheels,String colour)
    {
        Vehicle v = new Vehicle();
        Console.WriteLine("Enter license number,brand name,no of wheels and color for vehicle");
        licenseNo = Convert.ToInt32(Console.ReadLine());
        brandName = Convert.ToString(Console.ReadLine());
        noOfWheels = Convert.ToInt32(Console.ReadLine());
        color = Convert.ToString(Console.ReadLine());
        return v;
    }
    public String DisplayDetails(Vehicle v)
    {
        Console.WriteLine("License Number: {0}",licenseNo);
        Console.WriteLine("Brand Name: {0}",brandName);
        Console.WriteLine("No of Wheels: {0}",noOfWheels);
        Console.ReadKey();
        return color; 
    }

}
public class Program
{
    public static void Main(string[] args)
    {
        int lNo,wheels;
        String bName="";
        String colour="";
        Vehicle v = new Vehicle();
        lNo = v.licenseNo;
        bName = v.brandName;
        wheels = v.noOfWheels;
        colour = v.color;
        v.CreateObject(lNo,bName,wheels,colour);
        v.DisplayDetails(v);
        Console.WriteLine("Color: {0}",v.color);
        Console.Read();
    }
}