我有一段服务器-客户端代码,但是这个位在 AS3 中,我在 C# 中工作。有人可以帮我翻译吗?

I have a piece of server-client code, however this bit is in AS3 and I'm working in C#. Can someone help me translate it?

我一直在努力将旧服务器从 Flash 游戏转换成可以用作新服务器-客户端系统起点的东西,但是我只是遇到了一个停止点,我真的想不通.有人可以查看此代码并可能将其翻译成 C# 吗?

var dists:Array = [];
for(a=0;a<deltas.length;a++) {
    dists.push({offset:Math.abs(deltas[a]-avg), 
                time:deltas[a], 
                toString:function(){
                     return "offset:" + 
                     this.offset + ", 
                     time: " + this.time }
               })
}

请注意,除了 for 循环中的 int 之外,这些数字都是双精度数字。进一步说明,我已经将 Dists 翻译成双列表数组,但这可能是错误的。这是我目前所拥有的:

List<Double> Dist = new List<double>();

for (int i = 0; i < Deltas.Count; i++)
{
    Dist.Add(Math.Abs(Deltas[i] - Average));
}

声明一个新数组dists:

var dists:Array = [];

对于 deltas 中的每个值:

for( a=0;a<deltas.length;a++){

将新对象插入 dists 数组:

dists.push(...)

该对象将有两个属性 - offsettime - 并且将有一个 toString() 方法以友好的方式格式化数据。

offset 值将是当前增量与平均值之间的差值:

offset:Math.abs(deltas[a]-avg)

并且 time 值将是当前增量:

time:deltas[a]

根据所提供的信息,这就是我可以解决的...

void Main()
{
    Dictionary<int, double> deltas = new Dictionary<int, double>();
    int avg = 0;

    List<Item> dists = new List<Item>();
    for (int a = 0; a < deltas.Count(); a++)
    {
        dists.Add(new Item { Offset = Math.Abs(deltas[a] - avg), Time = deltas[a].ToDateTime()});
    }
}

public class Item 
{
    public double Offset { get; set; }
    public DateTime Time { get; set; }
    public string DisplayString { get; set; }

    public override string ToString()
    {
        return string.Format("offset: {0}, time: {1}", this.Offset, this.Time);
    }
}

public static class Extension
{
    public static DateTime ToDateTime(this double time)
    {
        return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(time);
    }
}