C#学习9

来源:互联网 发布:魔晶幻想战魂进阶数据 编辑:程序博客网 时间:2024/06/05 20:00

C#学习9:类与对象

类与构造函数的使用,建一个圆形类,半径默认为0,count统计有几个圆

//Circle.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Cambridge{    class Circle    {        public int radius;        public static int count=0;  //只有类名可以使用count        public Circle()  //构造函数        {            radius = 0;            count++;        }        public Circle(int t)  //重载构造函数        {            radius = t;            count++;        }        public double Area()        {            return Math.PI * radius * radius;        }    }}//Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Cambridge{    class Program    {        static void Main(string[] args)        {            Circle c1,c2;            c1 = new Circle();            double area1 = c1.Area();            Console.WriteLine(area1);            c2 = new Circle(10);            double area2 = c2.Area();            Console.WriteLine(area2);            Console.WriteLine("圆的数量为"+Circle.count);        }    }}

建一个点类,输入点的坐标,求该点到原点的距离

//Point.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Cambridge{    class Point    {        private int x;        private int y;        public Point()        {            x=0;            y=0;        }        public Point(int a,int b)        {            x=a;            y=b;        }        public double Dis(Point p)  //参数为对象        {            int xdif = x - p.x;            int ydif = y - p.y;            return Math.Sqrt(xdif * xdif + ydif * ydif);        }    }}//Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Cambridge{    class Program    {        static void Main(string[] args)        {            int x1 = int.Parse(Console.ReadLine());            int y1 = int.Parse(Console.ReadLine());            Point p1 = new Point();            Point p2 = new Point(x1, y1);            double ans = p2.Dis(p1);            Console.WriteLine("该点与原点的距离为" + ans);        }    }}

部分类

部分类定义,简言之,就是使用部分类定义,使类的定义横跨多个文件。

例如:可以把字段、属性和构造函数放在一个文件中,而把方法放在另一个文件中。

为此,只需在每个包含部分类定义的文件中对类使用partial关键字即可。

在一个项目中新建两个类,Circle1.cs,Circle2.cs,Program.cs可以调用者这两个类

//Circle1.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace cam{    partial class Circle    {        public Circle()        {            this.radius=0;        }        public Circle(int t)        {            this.radius=t;        }    }}//Circle2.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace cam{    partial class Circle    {        public int radius;        public double Area()        {            return Math.PI * this.radius * this.radius;        }    }}//Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace cam{    class Program    {        static void Main(string[] args)        {            Circle c1 = new Circle();            double area1 = c1.Area();            Console.WriteLine(area1);            Circle c2 = new Circle(10);            double area2 = c2.Area();            Console.WriteLine(area2);        }    }}

匿名类

匿名类可以临时储存数据,生命周期只在这个方法内,方法结束了,这个类型的生命周期也没有了

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace com{    class Program    {        static void Main(string[] args)        {            var Obj1 = new { Name = "Tom", Age = 18 };            Console.WriteLine(Obj1.Name + " " + Obj1.Age);            var Obj2 = new { Name = "Jerry", Age = 18 };            Console.WriteLine(Obj2.Name + " " + Obj2.Age);            Obj1 = Obj2;            Console.WriteLine(Obj1.Name + " " + Obj1.Age);        }    }}