我是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服务。它们只接受具有上述结构的阵列。这就是为什么我想实现这一目标。
答案 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"];
我的目标是将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});
}
此方法将仅保存数据,而不保存类之类的方法。
使用结构中定义的数据类型,内存使用率保持较低,因为它的唯一目的是存储数据。这是变量和类之间的中间点。