创建类似于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服务。他们只接受具有上述结构的阵列。这就是我想要实现这一目标的原因。
这里最好的方法是创建一个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});
}
此方法将只保存数据,而不会像类那样保存方法。
使用结构中定义的数据类型,内存使用率保持较低,因为它的唯一用途是存储数据。这是一个变量和一个类之间的中间位置。