创建类似于javascript数组的c#数组

时间:2014-11-07 18:04:23

标签: javascript c# arrays

我是C#的新手,想知道是否可以在C#中创建一个数组如下:

rates[0]['logic_id'] = 12;
rates[0]['line_id'] = ""
rates[0]['rate'] = rateVal;
rates[0]['changed'] = isChanged;

rates[1]['logic_id'] = 13;
rates[1]['line_id'] = ""
rates[1]['rate'] = secvalue;
rates[1]['changed'] = isChanged;

我可以使用此类值在rates中创建C#数组吗?

编辑:

我的目标是将rates数组发送到使用PHP运行的特定Web API服务。它们只接受具有上述结构的阵列。这就是为什么我想实现这一目标。

4 个答案:

答案 0 :(得分:4)

这里最好的方法是创建Rate中保存的List<Rate>()类。

public class Rate
{
    public int LogicId { get; set; }
    public string LineId { get; set; }
    public decimal Rate { get; set; }
    public bool IsChanged { get; set; }
}

public void Populate()
{
    var rates = new List<Rate>();

    var rate = new Rate();
    rate.LogicId = 12;
    rate.LineId = string.Empty;
    rate.Rate = 0;
    rate.IsChanged = true;

    rates.Add(rate);
}

要访问这些值,您可以遍历它们:

foreach(var rate in rates)
{
    //Do something with the object, like writing some values to the Console
    Console.WriteLine(rate.LogicId);
    Console.WriteLine(rate.Rate);
}

答案 1 :(得分:2)

你可以使用数组解决它,但它已经过时了。

我的建议是你应该使用List<Dictionary<string, object>>

var data = new List<Dictionary<string, object>>();

data.Add(new Dictionary<string, object>());

data[0].Add("rate", rateVal);

稍后您可以像使用字典索引器的JavaScript一样访问它:

var rate = data[0]["rate"];

更新

OP说:

  

我的目标是将rate数组发送到特定的Web API服务   用PHP运行。他们只接受上述阵列   结构体。这就是我想实现这一目标的原因。

没问题。如果序列化该字典列表using JSON.NET,则可以生成包含对象数组的JSON:

[{ "rate": 2 }, { "rate": 338 }]

实际上,.NET List<T>被序列化为JSON数组,Dictionary<TKey, TValue>被序列化为JSON对象,换句话说,作为关联数组。

答案 2 :(得分:0)

这可能取决于您的特定需求,也许您只需要一个对象列表

首先创建一个类:

class Rate
{
    public int LoginId { get; set; }
    public int? LineId { get; set; }
    public decimal RateValue { get; set; }
    public bool IsChanged { get; set; }
}

然后,在您想要的任何方法中,只需使用:

List<Rate> Rates = new List<Rate>();
Rates.Add(new Rate() {LoginId = 1, LineId = null, RateValue = Rateval, IsChanged = false});
Rates.Add(new Rate() {LoginId = 13, LineId = null, RateValue = SecVal, IsChanged = false});

修改

我为可怕的答案道歉,编辑以解释错误

答案 3 :(得分:0)

public struct Rate
        {
            public int LoginId ;
            public int LineId ;
            public double RateValue ;
            public bool IsChanged;
        }

        public static void makelist()
        {
             List<Rate> Rates = new List<Rate>();
             Rates.Add(new Rate() {LoginId = 1, LineId = null, RateValue = Rateval,IsChanged = false});
        }

此方法将仅保存数据,而不保存类之类的方法。

使用结构中定义的数据类型,内存使用率保持较低,因为它的唯一目的是存储数据。这是变量和类之间的中间点。