我们在使用大量相同的结构体的时候,就可以使用结构体列表来实现是十分不错的选择,也就是我们说的List
结构体定义如下。
struct NR_BCH_PROP
{
public long arfcn;
public long center_freq;
}
通过类型后面的<>来表示这个列表存储的数据的类型。
也可以直接赋值初值来使用,稍微复杂。
//创建了一个空的列表
public List<NR_BCH_PROP> nrList = new List<NR_BCH_PROP>();
//创建了一个有值列表
public List<NR_BCH_PROP> list1 = new List<NR_BCH_PROP>() {
new NR_BCH_PROP( 250 , 1250000 ),
new NR_BCH_PROP( 270 , 1350000 )
};
通过new struct() 初始化数据接头的类型的一个对象 _NR_BCH_PROP。
赋值后,通过 nrList.Add(_NR_BCH_PROP) 添加列表内容,如果有内容就会在最后的位置添加。
//结构体实例化
NR_BCH_PROP _NR_BCH_PROP = new NR_BCH_PROP();
//结构体对象赋值
_NR_BCH_PROP.center_freq = 1200000 + 50000;
_NR_BCH_PROP.arfcn = _NR_BCH_PROP.center_freq / 5000;
//在最后位置添加一个结构体
nrList.Add(_NR_BCH_PROP);
遍历的方法和普通列表一样靠索引定位。
//获取所有值
for(int i = 0;i < nrList.Count();i++)
{
//申请临时对象
NR_BCH_PROP _temp_value = new NR_BCH_PROP();
//获取值
_temp_value.center_freq = nrList[i].center_freq;
_temp_value.arfcn= nrList[i].arfcn;
}
要注意清除前要确认是否小于总列表数量。
删除后也同样要注意,删除的是中间的值,列表不会流空,并刷新索引。
int i=0;
if(i < nrList.Count())
{
nrList.RemoveAt(i);
}
全删除可以不用遍历的方法,可以使用列表的Clear()方法一次性清除更加简单。
nrList.Clear();
如果需要排序可以通过Sort()方法加上委托迅速实现排序,下面的示例就是将nrList中的center_freq值按顺序从小到大排序。
nrList.Sort(delegate (NR_BCH_PROP p1, NR_BCH_PROP p2)
{
return p1.center_freq.CompareTo(p2.center_freq);
});