1.list列表
(1).List泛型集合的声明:
List<数据类型> 变量名=new list<数据类型>();
注意:
1,如果代码声明的是一个string类型的泛型集合,其元素必须都为string型。
2,也可以声明其他元素的泛型集合,只需要将string改成对应类型便可。
3.List泛型集合添加元素的Add()方法:
4.list泛型集合和数组类似,下标是从0开始的 list[0];
5.如果要添加一个字符串数组在集合中,使用AddRange()方法便可
例如:string[] str=new string[]{“六号元素”,“七号元素”,“八号元素”};
//使用AddRange()方法将元素添加到集合中
list.AddRange(str);
(2)常用属性:
1.Count属性
返回List泛型集合中元素的数量。
如我们对上面已经添加过元素的集合获得其Count属性值
Console.WriteLine(list.Count); //输出ListNew集合的元素数量
2.Capacity属性
返回在不增加大小的情况下目前List泛型集合的容量
List泛型集合在添加元素的时候容量是变化的,其过程(原理)如下:
当添加元素的时候集合的容量不足以容纳所有元素就会自动增加目前元素数一倍的容量。
(3)常用方法
1.Add()方法,添加元素的方法,前面已经讲过
2.Clear()方法,无返回值,清空集合中的所有元素
3.Contains()方法,返回布尔型数据,参数为集合中元素的数据类型
功能:检查集合中是否存在某元素 listNew.Contains(“xx");
返回为 true和false
4.Equals()方法
比较两个List泛型集合是否相等
举例,比较listNew集合与listold集合是否相等:
5.Indexof()返回值为int,从索引位置0开始查找元素,并得到索引值
6.Insert()方法,插入元素 insert(要插入元素的位置,插入元素的值) 在插入后元素数量变为增加了1,原来索引3位置上的元素在索引位置4上了,后面的元素全部向后移动了一格。
7.Remove()方法,删除指定元素 删除这个元素之后后面的元素会上移一个索引位置
8.RemoveAt()方法,根据索引位置删除元素 删除这个元素之后后面的元素会上移一个索引位置。
9.Reserve()方法,将集合中的所有元素反向排序 反向排序之后集合中元素的索引会有改变
10.ToArray()方法,将集合转换为数组 如我们将listNew集合转换为一个string数组string[] str=listNew.ToArray();
11.Distinct()方法
在代码中先创建一个通用比较的类,实现IEqualityComparer接口:
举例:
public class CFComparer : IEqualityComparer<ShapeLine>
{
public bool Equals(ShapeLine b1, ShapeLine b2)
{
//坐标转换为绝对坐标之后在比较去重 2021.08.06 新增
//MessageBox.Show(LSTable.GetShapeLineMes(b1, 1)+"--"+start1.X);
return (Math.Abs(LSTable.GetShapeLineMes(b1, 1) - LSTable.GetShapeLineMes(b2, 1)) < CommonData.modifyControl
&& Math.Abs(LSTable.GetShapeLineMes(b1, 2) - LSTable.GetShapeLineMes(b2, 2)) < CommonData.modifyControl
&& Math.Abs(LSTable.GetShapeLineMes(b1, 3) - LSTable.GetShapeLineMes(b2, 3)) < CommonData.modifyControl
&& Math.Abs(LSTable.GetShapeLineMes(b1, 4) - LSTable.GetShapeLineMes(b2, 4)) < CommonData.modifyControl); //去重
}
public int GetHashCode(ShapeLine b)
{
return b.ToString().GetHashCode();
}
}
List1 = List1.Distinct(new CFComparer()).ToList()//代表给列表List1的元素去重
也就是说Distinct()方法的返回集合类型是一个接口,不是具体的集合,所以需要用一个ToList()。
2.列表传参
get:得到,将某个数值输出;
set:给,复制,给某个变量赋值;
public class HalconClass
{
double _pixelDiameter; //声明要传参的数据类型与名
public double pixelDiameter //设置get、set方法(取名要与参数有关联)
{
set { _pixelDiameter = value; }//先得到再输出(顺序颠倒,效果不变)
get { return _pixelDiameter; }
}
public void Calibrate()
{
_pixelDiameter = 10;//这样参数赋值结构就会传递到上面,等待调用
}
}
public class HalconOperate
{ HalconClass _halClass= new HalconClass ();/先实例化上一个类,才能调用它里面的方法
public void Calibrate()
{//直接如下调用即可得到传递的值
//X代表未知,需要得到这个数的程序
X=_halClass .pixelDiameter();
}
}