第十七节 查看类关系图,二元重载,objetc:万类之根、动态数组实例化、集合和泛型1

View Code
案例1:查看类关系图

namespace e1
{
    class Student
    {
        private string name;
        public string Name
        {
            set{name=value;}
            get { return name; }
        }
        private int age;
        public int Age
        {
            set {age=value ;}
            get { return age; }
        }

        public void SayHi()
        {
            Console.WriteLine("姓名:{0},年龄:{1}",name,age);
        }
    }
}

————————————————————————————————————————————

namespace e1
{
    class Program
    {
        /// <summary>
        /// 查看类关系图
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.Name = "张三";
            stu.Age = 25;
            stu.SayHi();
            Console.ReadKey();
        }
    }
}
——————————————————————————————————————————————————————————————————————————————————————————————

案例2:二元重载

amespace e2
{
    class Calclator
    {
        private int number;

        public Calclator()
        {
            number = 0;
        }

        public Calclator(int number)
        {
            this.number = number;
        }
        //二元重载
        //访问修饰符 static 数据类型 operator 运算符(参数....)
        //{
                     //主体内容.......
        //}
        public static Calclator operator +(Calclator cl1, Calclator cl2)
        {
            Calclator cl3 = new Calclator();
            cl3.number = cl1.number + cl2.number;
            return cl3;
        }

        public void SayHi()
        {
            Console.WriteLine("number:{0}",number);
        }

    }

 

    class Program
    {
        static void Main(string[] args)
        {
            Calclator c1 = new Calclator(100);
            Calclator c2 = new Calclator(50);
            Calclator c3 = new Calclator();
            c3 = c1 + c2;
            c1.SayHi();
            c2.SayHi();
            c3.SayHi();
            Console.ReadKey();

        }
    }
}

——————————————————————————————————————————————————————————————————————————————————————————————

案例3:二元重载例子

namespace e3
{
    class Calculator
    {
        int number1;
        int number2;

        public Calculator(int number1, int number2)
        {
            this.number1 = number1;
            this.number2 = number2;
        }

        public static Calculator operator -(Calculator c1)
        {
            c1.number1=-c1.number1;
            c1.number2 =-c1.number2;
            return c1;
        }

        public void Print()
        {
            Console.WriteLine("number1:{0}",this.number1);
            Console.WriteLine("number2:{0}", number2);
        }  
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Calculator c1=new Calculator(20,-30);
            c1=-c1;
            c1.Print();
            Console.ReadKey();
        }
    }
}

——————————————————————————————————————————————————————————————————————————————————————————

案例4:二元重载 注:加加++先赋值后计算!

namespace e4
{
    struct NumberCount
    {
        public int i;

        public NumberCount(int i)
        {
            this.i = i;
        }
        public static NumberCount operator ++(NumberCount arg)
        {
            arg.i++;
            return arg;
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            NumberCount n1 = new NumberCount(0);
            NumberCount n2 = n1++;//加加在后是先赋值在计算
            Console.WriteLine("n1.i:{0}", n1.i);
            Console.WriteLine("n2.i:{0}", n2.i);

            n2 = ++n1;

            Console.WriteLine("n1.i:{0}", n1.i);
            Console.WriteLine("n2.i:{0}", n2.i);

            Console.ReadKey();
        }
    }
}

——————————————————————————————————————————————————————————————————————

案例5: objetc 注:万类之根

namespace e5
{
    class Program
    {
        static void Main(string[] args)
        {
            //类型不报错
            //万类之根:C#所有的数据类型(值类型和引用类型)都是从它衍生而来
            object obj = "Welcome!";

            obj = 100;
            obj = 3.1415926;
            obj = new Program();
        }
    }
}
View Code
案例1:动态数组实例化

using System;
using System.Collections.Generic;
using System.Text;
//导入命名空间
using System.Collections;
namespace e6
{
    class Program
    {
        static void Main(string[] args)
        {
            //动态数组实例化
            ArrayList arr1 = new ArrayList();
            ArrayList arr = new ArrayList(5);//可限制容量
            arr.Add(10);
            arr.Add(2.366);
            arr.Add("zhangshang");


            Console.WriteLine("索引0:"+arr[0]);
            Console.WriteLine("索引1:" + arr[1]);
            Console.WriteLine("索引2:" + arr[2]);
            Console.WriteLine("添加前容量"+arr.Capacity);
            arr.Add(1000);
            arr.Add("Test");
            arr.Add(44.6);
            Console.WriteLine("添加后容量"+arr.Capacity);//容量不够自动添加
            //数组是一个静态的数据结构,一旦定义后它的元素大小不能够改变
            //动态数组是一个动态的数据结构
            //动态数组可以不用去考虑他的容量问题,他会动态分配空间

            Console.WriteLine("遍历");
            //foreach 只针对数组或者集合遍历操作的循环
            foreach (object obj in arr)
            {
                Console.Write(obj+" ");
            }
            Console.WriteLine("\n遍历");
            //二者类似!循环!

            for (int i = 0; i < arr.Count; i++)
            {
                Console.Write(arr[i]+" ");
            }
            Console.ReadKey();

        }
    }
}

——————————————————————————————————————————————————————————————————————————————————————————

案例2 :集合和泛型1

namespace 集合和泛型1
{
    class Program
    {
        static void Main(string[] args)
        {
            //数组就是Array的对象
            int[] arr ={ 102, 99, 150, 70, 100 };
            Console.Write("排序前:");
            foreach (int i in arr)
            {
                Console.Write(i+" ");
            }

            Array.Sort(arr);
            Console.Write("\n排序后:");
            foreach (int i in arr)
            {
                Console.Write(i + " ");
            }

            //复制前面三个数

            int[]destination=new int[arr.Length-2];
            Array.Copy(arr, destination, arr.Length - 2);
            Console.WriteLine("\n复制后:");
            foreach (int i in destination)
            {
                Console.Write(i+" ");
            }


            //反转
            int[] arr2 ={ 100, 77, 200, 60, 80 };

            Console.Write("\n反转前:");
            foreach (int i in arr2)
            {
                Console.Write(i + " ");
            }

            Console.Write("\n反转后:");
            Array.Reverse(arr2);
            foreach (int i in arr2)
            {
                Console.Write(i + " ");
            }

            //查找数组中的索引
            Console.Write("\n查找数组中的索引:");
            int index = Array.IndexOf(arr2, 60);
            Console.WriteLine("元素为60的索引:{0}",index);
            //修改索引的值
            int[] arr3 = new int[3] { 500, 100, 400 };
            Console.WriteLine("数组索引为1的值{0}",arr3.GetValue(1));
            Console.Write("修改后:");
            arr3.SetValue(300, 1);
            Console.WriteLine("数组索引为1的值{0}", arr3.GetValue(1));

 


            Console.ReadKey();
        }
    }
}

 

posted @ 2012-06-20 21:07  ComBat  阅读(183)  评论(0编辑  收藏  举报