如果我错过了与此明显的东西,我感到很高兴!
我希望让用户对代码进行贴花处理,然后引用类名并从中提取所有数据。
在这里我将向用户显示该信息
Console.Write("Input a code:");
Console.Read();
Console.WriteLine("code: " + HU2H02.HeadCode);
var i = 0;
Console.WriteLine("Stop No: Station: Arr: Dep:");
foreach (Station stop in HU2H02.CallingPattern)
{
if (i < HU2H02.CallingPattern.Count-1)
{
if (i == 0)
Console.WriteLine("stop {0}: {1} \t {3: hh:mm}", i, stop.Name, HU2H02.ArrTimes[i], HU2H02.DepTimes[i]);
else
Console.WriteLine("stop {0}: {1} \t {2: hh:mm} - {3: hh:mm}", i, stop.Name, HU2H02.ArrTimes[i], HU2H02.DepTimes[i]);
}
else
{
Console.WriteLine("stop {0}: {1} \t {2: hh:mm}", i, stop.Name, HU2H02.ArrTimes[i]);
}
i++;
}
这是我的班级代码:(对不起,因为我仍在处理它。
class Train
{
public string HeadCode { get; set; }
public string Origin { get; set; }
public string Destination { get; set; }
public List<Station> callingPattern = new List<Station>();
public List<DateTime> arrTimes = new List<DateTime>();
public List<DateTime> depTimes = new List<DateTime>();
public DateTime DepartOrigin { get; set; }
public DateTime ArriveDestination { get; set; }
public string Via1 { get; set; }
public string Via2 { get; set; }
public string Via3 { get; set; }
public string Via4 { get; set; }
public object this[string Headcode]
{
get
{
Type myType = typeof(Train);
PropertyInfo myPropInfo = myType.GetProperty(Headcode);
return myPropInfo.GetValue(this, null);
}
set
{
Type myType = typeof(Train);
PropertyInfo myPropInfo = myType.GetProperty(Headcode);
myPropInfo.SetValue(this, value, null);
}
}
public Train(List<Station> patterns, string newheadCode, string timetoDepartOrigin, string Origin)
{
TimeSpan previousTime = new TimeSpan();
TimeSpan holder = new TimeSpan();
TimeSpan calcTimeSpan = new TimeSpan();
int i = 0;
foreach (Station pattern in patterns)
{
CallingPattern.Add(pattern);
if (pattern.Name == Origin)
{
depTimes.Add(Convert.ToDateTime(timetoDepartOrigin));
ArrTimes.Add(Convert.ToDateTime(timetoDepartOrigin));
previousTime = TimeSpan.Parse(timetoDepartOrigin);
}
else
{
holder = TimeSpan.Parse(callingPattern[callingPattern.Count - 2].DwellTimePeak);
calcTimeSpan = previousTime + holder;
ArrTimes.Add(DateTime.Parse(Convert.ToString(calcTimeSpan)));
if (callingPattern[callingPattern.Count - 1].DwellTimePeak != null)
{
holder = TimeSpan.Parse(callingPattern[callingPattern.Count - 1].DwellTimePeak);
calcTimeSpan = calcTimeSpan + holder;
depTimes.Add(DateTime.Parse(Convert.ToString(calcTimeSpan)));
previousTime = depTimes[depTimes.Count - 1].TimeOfDay + TimeSpan.Parse(callingPattern[callingPattern.Count - 1].TimetonextStationUP[patterns[i + 1].Name]);
}
}
i++;
}
HeadCode = newheadCode;
DepartOrigin = Convert.ToDateTime(timetoDepartOrigin);
}
public List<DateTime> ArrTimes { get => arrTimes; set => arrTimes = value; }
public List<DateTime> DepTimes { get => depTimes; set => depTimes = value; }
internal List<Station> CallingPattern { get => callingPattern; set => callingPattern = value; }
}
}
}
我还需要将整个类声明为Public吗?
我希望将整个Class解析回Main程序或其他Display类,并在以后的程序设计中进一步使用,因为我希望该类成为其他几个类的子类。 >
我对C#有点新鲜,因此如果有任何理由,那么使用appology没有任何意义!谢谢, 克里斯
答案 0 :(得分:1)
要查找火车,您需要维护static
个火车集合。静态变量和函数在类级别(而不是实例级别)上运行。
向您的班级添加类似内容:
private static Dictionary<string, Train> _trains;
private Train GetTrain(string headCode) {
if (_trains.TryGetValue(headCode, out var train)) {
return train;
} else {
return null;
}
}
private bool TryGetTrain(string headCode, out Train train) {
return _trains.TryGetValue(headCode, out train);
}
然后,在构造函数的末尾,添加如下代码:
_trains.Add(newHeadCode, this);
每次创建新火车时,都会将其添加到该火车词典中。然后,当您要查找火车时,可以执行此操作。
var myTrain = Train.GetTrain("some head code");
答案 1 :(得分:0)
如果您没有将class定义为任何东西,它将保持私有状态。 私有类不能在其他类上访问。 因此我们将其定义为内部或公共。
内部类可以在包含当前项目的任何类上访问。 公共类在其他任何项目上都可以访问。选择它取决于您的目的。