我正在创建类层次结构树,以便在键入对象路径时使它们在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; }
}
Run Code Online (Sandbox Code Playgroud)
这个有效...
var vehicle = new Dealer().VehicleData;
vehicle.Year = "2007";
vehicle.Make = "Ford";
Run Code Online (Sandbox Code Playgroud)
这一个不起作用......
Dealer().VehicleData vehicle = new Dealer().VehicleData;
vehicle.Year = "2004";
vehicle.Make = "Buick";
Run Code Online (Sandbox Code Playgroud)
这个也不起作用......
var vehicles = new List<Dealer().VehicleData>();
vehicles.Add(
new Dealer().VehicleData {
Year = "2001",
Make = "Toyota"
}
);
vehicles.Add(
new Dealer().VehicleData {
Year = "2003",
Make = "Volvo"
}
);
Run Code Online (Sandbox Code Playgroud)
Dealer().VehicleData 不是一种类型,它是一种财产.
您不能将变量声明为type 属性.
这就像这样没有意义:
public class Person
{
public string Name { get; set; }
}
...
new Person().Name test;
Run Code Online (Sandbox Code Playgroud)
注意这一行:
var vehicle = new Dealer().VehicleData;
Run Code Online (Sandbox Code Playgroud)
实际上意味着与此行相同:
Vehicle vehicle = new Dealer().VehicleData;
Run Code Online (Sandbox Code Playgroud)
另请注意,在这种情况下,您不是存储对经销商的引用,而是仅存储到车辆,因此您应该像这样编写上述代码:
var vehicle = new Vehicle();
Run Code Online (Sandbox Code Playgroud)
你真的在寻找命名空间的概念吗?
这个:
System.IO.FileStream()
Run Code Online (Sandbox Code Playgroud)
实际上必须像这样使用:
new System.IO.FileStream()
Run Code Online (Sandbox Code Playgroud)
部分如下:
+----------------------+---- calling the constructor of FileStream
| |
v+v vv
new System.IO.FileStream()
^---+---^ ^----+---^
| |
| +-- the name of the class
|
+-- the namespace of the FileStream class
Run Code Online (Sandbox Code Playgroud)
申报:
namespace System.IO
{
public class FileStream
{
public FileStream()
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
(请注意,FileStream实际上没有无参数构造函数,所以上面实际上是错误的,但是你得到了要点)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |