1

我正在创建类层次结构树,以便在键入对象路径时在 Intellisense 中组织起来更容易阅读。例如“System.IO.FileStream()”。

我注意到当我使用 var 时它有效,但当我使用完整的类命名时它不起作用。我还注意到当我使用 List<> 对象时它不起作用。谁能向我解释为什么以及我做错了什么。谢谢...

public class Vehicle
{
    public string Year { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }
    public string Trim { get; set; }
}
public class Dealer
{
    public Vehicle VehicleData { get { return new Vehicle(); } set; }
}

这个有效...

var vehicle = new Dealer().VehicleData;
vehicle.Year = "2007";
vehicle.Make = "Ford";

这个不行。。。

Dealer().VehicleData vehicle = new Dealer().VehicleData;
vehicle.Year = "2004";
vehicle.Make = "Buick";

这个也不行。。。

var vehicles = new List<Dealer().VehicleData>();
vehicles.Add(
    new Dealer().VehicleData {
        Year = "2001", 
        Make = "Toyota"
    }
);
vehicles.Add(
    new Dealer().VehicleData {
        Year = "2003", 
        Make = "Volvo"
    }
);
4

1 回答 1

7

Dealer().VehicleData不是类型,而是属性。

您不能将变量声明为property类型。

这和下面一样没有意义:

public class Person
{
    public string Name { get; set; }
}

...
new Person().Name test;

请注意,这一行:

var vehicle = new Dealer().VehicleData;

实际上与行相同:

Vehicle vehicle = new Dealer().VehicleData;

另请注意,在这种情况下,您不会存储对经销商的引用,而只是对车辆的引用,因此您应该像这样编写上面的代码:

var vehicle = new Vehicle();

你真的在寻找命名空间的概念吗?

这个:

System.IO.FileStream()

实际上必须像这样使用:

new System.IO.FileStream()

零件如下:

 +----------------------+---- calling the constructor of FileStream
 |                      |
v+v                     vv
new System.IO.FileStream()
    ^---+---^ ^----+---^
        |          |
        |          +-- the name of the class
        |
        +-- the namespace of the FileStream class

声明它:

namespace System.IO
{
    public class FileStream
    {
        public FileStream()
        {
        }
    }
}

(请注意,FileStream实际上没有无参数构造函数,因此上面的内容实际上是错误的,但您明白了要点)

于 2013-07-28T18:53:25.707 回答