C#中的集合、集合操作、分开奇偶数、初始化集合、字符处理、统计字符个数、字符转换

1、命名空间在using System.Collections;

2、拆箱:将引用类型转为值类型

     装箱:将值类型转换为引用类型;

     拆箱与装箱的两种类型必须具有继承关系。

     引用类型:object、string、数组、interface、集合、自定义类 (堆)

    ref:将值传递改为引用传递。

     引用传递的地址变化举例:
    public class Teacher
    {
       // string _name;
        public string Name
        {
            get;
            set;
        }
    }
    Teacher te = new Teacher(); // 在堆中开辟了空间存放Teacher类,包括其中的值。名字te放在栈中,存放的是空间中的地址;
     te.Name = "teach";
    Teacher st = te;            //将堆中空间的地址赋值给栈中st,指向同一块堆的空间。
    st.Name = "study";          // 堆中对应的数据发送改变


3、集合操作

            一般不用ArrayList 与Hashtable  ,因为这两个集合没有指定的类型。

            ArrayList arry = new ArrayList();// 存放的类型object,都可以放入值
            arry.Add("hello");
            string [] strnu={"he","llo","ok"};
            arry.AddRange(strnu);
            Hashtablehas=new Hashtable ();// 存放的key,value,都是object类型
            has.Add(1,3);
            has.Add('A',"OK");
            has.Add(2,34.79);


           List<int> lis = new List<int>();
            lis.Add(1);// 添加单个元素
            lis.Add(2);
            lis.AddRange(new int[]{ 1,2,3,4});// 添加集合
            int[] in1=new int[]{1,2,3,2,7};
            lis.Remove(1);//移除
            lis.AddRange(in1);
            lis.RemoveRange(1,3);//移除集合,移除一定范围的  如:从第一个开始移除3个
            lis.Insert(3,100);
            lis.InsertRange(6,in1);//插入,用法:在指定的位置插入
            bool b = lis.Contains(3);

            Dictionary <int ,string > dic=new Dictionary<int ,string >();
            dic.Add (1,"hello");
            dic[2]="这样添加,即使键重复了,也不会抛异常";
            dic.Add (0,"若键重复,会抛异常");

           // lis.RemoveAll();// 移除与指定的条件相符合的

            // 两种遍历方式 dictory<key,value >
             foreach (KeyValuePair <int,string > item in dic )
            {
                Console.WriteLine (item.Value  );
            }
             foreach (var item in dic.Keys )
             {
                 Console.WriteLine(dic[item]);
             }

4、区分数组中的奇数偶数,分别放在数组中;

 

      void GetOddEven(int[] num,string Odd,string  Even)
        {
            List<int >  lis1=new List<int>();
            List<int >  lis2=new List <int>();
             for(int i=0;i<num.Length ;i++){
                 if(num[i]%2==0){
                     lis1.Add (num[i]);
                 }
                 else
                     lis2.Add (num[i]);
            }
             Odd = lis1.ToString();
             Even = lis2.ToString();
        }

将集合转换为数组

5、int [] nn= lis1.ToArray();  //将集合转换为数组

6、集合初始化器

      集合的两种赋值方式:
            List<int> lis1 = new List<int> { 1,2,3,4,56,6,32};
            lis1.AddRange(new int[] { 1, 2, 3, 4, 56, 6, 32 });
     也可以用这种方式给类赋值,一个类Teaher,其中有属性Name,Age,Hour 
           Teaher te = new Teaher() { Name = "vv", Age = 12, Hour = 12 };


7、遇到某些字符转换到两一个字符的处理方法 123---一二三

            Dictionary<char, char> dic = new Dictionary<char, char>();
            string st = "1一 2二 3三 4四 5五 6六 7七 8八";
            string[] strnew = st.Split( new char[] {' '},StringSplitOptions .RemoveEmptyEntries );
            for (int i = 0; i < strnew.Length;i++ )
            {
                dic.Add(strnew[i][0],strnew[i][1]);
            }
            string str = "1245533656";
            char [ ] ch=str.ToCharArray ();
            List<char> lis=new List<char> ();
            for (int i = 0; i < ch.Length; i++)
            {
                if (dic.ContainsKey(ch[i]))
                {
                    lis.Add(dic[ch[i]]);
                }
                else
                    lis.Add(ch[i]);
            }
            foreach (var item in lis)
                    {
                        Console.WriteLine(item);
                    }


        // 统计字符出现的次数
            Dictionary<char, int> dic = new Dictionary<char, int>();
            string str="12234567783425";
            for (int i = 0; i < str.Length;i++ )
            {
                if (dic.ContainsKey(str[i]))
                {
                    dic[str[i]]++;
                }
                else
                    dic[str[i]] = 1;
            }
            foreach (KeyValuePair<char,int>  item in dic )
            {
                Console.WriteLine("{0}----{1}",dic.Keys ,dic.Values );//这里写错了,不是dic,打印出来是命名空间
                Console.WriteLine("{0}----{1}",item.Key  ,item.Value  ); //正确的
            }



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枚努力的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值