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

本文关键字:数组 javascript 类似于 创建 | 更新日期: 2023-09-27 18:29:40

我是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;

我可以用这样的值在C#中创建rates数组吗?

编辑:

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

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

这里最好的方法是创建一个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);
}

您可以使用数组来解决它,但这种方法在某种程度上已经过时了。

我的建议是你应该使用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说:

我的目标是将费率数组发送到特定的Web API服务使用PHP运行。他们只接受上面提到的数组结构这就是我想要实现这一目标的原因。

没问题。如果使用JSON.NET序列化字典列表,则可以生成一个JSON,其中包含一个对象数组:

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

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

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

首先创建一个类:

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});

编辑

我为糟糕的答案道歉,经过编辑以解释错误

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});
        }

此方法将只保存数据,而不会像类那样保存方法。

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