我正在努力创建类层次结构树,以便在键入对象路径时在 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"
}
);
最佳答案
Dealer().VehicleData
不是类型,而是属性。
您不能将变量声明为属性类型。
这和下面一样毫无意义:
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();
您实际上是在寻找 namespaces 的概念吗? ?
这个:
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 实际上没有无参数构造函数,因此上述内容实际上是错误的,但您明白了要点)
关于c# - 是否有一种正确的方法来菊花链式连接类并以正确的方式调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911631/