C#學習9:類與對象
類與構造函數的使用,建一個圓形類,半徑默認為0,count統計有幾個圓
[csharp]
//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);
}
}
}
建一個點類,輸入點的坐標,求該點到原點的距離
[csharp]
//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可以調用者這兩個類
[csharp]
//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);
}
}
}
匿名類
匿名類可以臨時儲存數據,生命周期只在這個方法內,方法結束了,這個類型的生命周期也沒有了
[csharp]
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);
}
}
}