日期:2014-05-17  浏览次数:20975 次

C#学习9

C#学习9:类与对象

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

//Circle.cs
using 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.cs
using 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.cs
using 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.cs
using 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.cs
using 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.cs
using 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.cs
using 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);
        }
    }
}

匿名类

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

usi