C#的数组和集合
一、对于图片的保存
实现在visionPro里对图片的保存还是很重要的一部分,因为我们调试视觉很多时候我们一般都要调试几天,验证几周才能得出这个算法是稳定状态,而我们就得保存一些OK图和NG图以便我们后面的调试优化工作。废话不多说,直接贴上代码。
CogImageFile ImageFile = new CogImageFile();
try
{
if(!System.IO.Directory.Exists(imagePath))
{
System.IO.Directory.CreateDirectory(imagePath);
}
ICogImage image = pma2.InputImage;
ImageFile.Open(imagePath + "\\" + DateTime.Now.ToString("HH-mm-ss-fff") + ".bmp", CogImageFileModeConstants.Write);
ImageFile.Append(image);
}
catch{}
finally
{
ImageFile.Close();
}
二、C#中的数组和集合
对于我们而言,写代码对于数组的应用真的特别多,但又不是专业的码农有时候真的会经常忘记,记录一下数组的用法!我在这个行业应用比较多的语言就是C#和Python,所以只记录这两种语言。
C# 数组的声明及初始化:
- 一维数组
1. int [] a; a = {1,12,2}; //先声明后初始化,这个我比较习惯用
2. int [] a = new int[3];
3. int [] a = {1,12,2}; //声明并初始化;
4. int [] a = new int[3]{1,12,2};
- 二维数组:
1.int [,] a; a = {{1,12,3},{2,4,5}};
2.int [,] a = new int[2, 3];
3.int [,] a = {{1,12,3},{2,4,5}};
4.int [,] a = new int[2, 3]{{1,12,3},{2,4,5}};
- 三维数组:
1.int[,,] array = new int[2, 3, 2]; //三维数组我一般只声明,用的时候再直接赋值
2.int[,,] a = new int[2, 3, 2]{{{1,2},{3,4},{5,6}},{{1,2},{3,4},{5,6}}};
集合与数组比较类似,并且提供了很多功能的集合类,他们的共同父类为System.Collection,常用的有一下几个
1. ArrayList:集合中元素的个数是可变的(动态数组),也可以存放不同类型,有添加、删除等方法。与数组不同的是,它可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。
--创建一个实例 :ArrayList listl=new ArrayList() 或者 ArrayList list4 = new ArrayList(){l,2,3,4}
2. Stack:先进后出的机制,元素在集合的尾部添加、在***尾部***移除
3. Queue:先进先出的机制,元素在集合的尾部添加、在***头部***移除
4. Hashtable:元素是以键值对的形式存放的
5. SortedList:与 Hashtable 集合类似,元素以键值对存放,但该集合会按照 key 值自动将元素排序
Python 没有数组结构,数组被称为列表(list),声明及初始化:
1.a = [1,2,3,4] #一维列表
2.a = [[0,1],[2,3],[4,5]] #二维列表
3.a = [[1] * 4] 等于 a = [1,1,1,1]
4.a = [[] for i in range(3)]
列表中包含任意数量的项。列表中的项不必具有相同的类型。