欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

知识点梳理(封装,泛型)

程序员文章站 2024-03-15 12:58:17
...

7.2知识点梳理(封装,泛型)

扩展:

out》用途: 如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,可以考虑使用out参数。out参数要求在离开方法内部以前必须赋值.

static void Main(string[] args)
        {
            int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int max;
            int min;
            int sum;
            int avg;
            string s;
    		// 方法调用要带上out
            Test(nums, out max, out min, out sum, out avg, out s);
            Console.WriteLine(max);
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.WriteLine(avg);
            Console.WriteLine(s);
            Console.ReadKey();
        }
 
        public static void Test(int[] nums, out int max, out int min, out int sum, out int avg, out string s)//5个out参数修饰的是多余的返回值
        {
            //out参数必须在方法内部为其赋值,否则返回去没有意义
            max = nums[0];
            min = nums[0];
            sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                {
                    max = nums[i];
                }
                if (nums[i] < min)
                {
                    min = nums[i];
                }
                sum += nums[i];
            }
            avg = sum / nums.Length;
            //此方法void无返回值,无需写return
            s = "Test_Result";
        }

2,封装函数

新建consle工程,生成属性勾选XML选项;尽量将namespace 空间改为和dll文件名相同:需要注释则在函数前面添加(一定要是vs自带的注释)

using HalconDotNet;
namespace Class1
{
   public class myclass
    {
        /// <summary>
        /// 添加Add函数,为dll文件添加注释
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
       public HObject ho_image;
        public int Add(int a,int b)
        {
            return a + b;
        }
      /// <summary>
      /// 读取图像格式;
      /// </summary>
        public void  ReadImage(string imagepath,HTuple window)
        {
            HOperatorSet.GenEmptyObj(out ho_image);
            HOperatorSet.ReadImage(out ho_image, imagepath);
            HOperatorSet.DispImage(ho_image, window);
            //return ho_image;
        }

}
编译生成dll文件;

二、引用
添加命名空间 Class1;
using Class1;

最后实例化之后调用,

myclass m = new myclass();
label1.Text = m.Add(3,5).ToString();

注:引用里面也可以引用其他的dll文件,不影响结果;

3,bitmap与byte[]的转换

Bitmap => byte[]

Bitmap   b   =   new   Bitmap( "test.bmp "); 
 MemoryStream   ms   =   new   MemoryStream(); 
 b.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp); 
 byte[]   bytes=   ms.GetBuffer();  //byte[]   bytes=   ms.ToArray(); 这两句都可以,至于区别么,下面有解释
ms.Close(); 

byte[] => Bitmap

byte[]   bytelist=bytes; 
 MemoryStream   ms1   =   new   MemoryStream(bytelist); 
 Bitmap   bm   =   (Bitmap)Image.FromStream(ms1); 
 ms1.Close(); 

4,泛型:

class Stack<T>
    {
        private int count = 0;
        private T[] arr;
        public  Stack(int size)
        {
            arr = new T[size];
            
        }
        public void push(T x)
        {
            arr[count++] = x;
        }
        public T pop()
        {
            return arr[--count];
        }
    }
    class test
    {
        static void Main()
        {
            Stack<int> s1 = new Stack<int>(3);
            s1.push(1);
            s1.push(23);
            Console.WriteLine(s1.pop() + s1.pop());//由于pop返回的是object类型必须转换之后才能使用
        }
    }

5.using

  • 重命名:using kkkkkkk=system.console;

  • 引用多个 using(Sqlconnection conn=new SqlConnection(“server=ct//SQLEXPRESS;database=db_14;integrated security=true”))

相关标签: 学习笔记 c#