c#面向对象基础

 多态性.cs

using System;
class Car
{
public virtual void Drive()
{ Console.WriteLine("Drive Car"); }
}
class Truck : Car
{
public override void Drive()
{ Console.WriteLine("Drive Truck"); }
}
class Client
{
public static void Main()
{
Car c = new Truck();
c.Drive(); //
多态性决定着将调用TruckDrive方法
}
}
字段与属性.cs

using System;

class Account
{
 private double balance = 0;  //
字段
 public double Balance   //
属性
 {
  get { return balance; }
  //set { balance = value;}
   set { }
 }
 /*=============================================================
  *
我们可以通过修改getset方法达到控制存取的目的。
  *
例如:
  *
  * 1)
只读属性
  * public double Balance   //
属性
  * {
  *    get { return balance; }
  *    set { }
  * }
  *
  * 2)
读写控制
  * public double Balance
  * {
  *    get
  *    {
  *       if(Console.ReadLine()=="1234")
  *          return balance;
  *       else
  *          return -9999999;
  *    }
  *    set { }
  * }
  * =============================================================
  */

 public void Deposit(double n)
 { this.balance += n; }

 

 public void WithDraw(double n)
 { this.balance -= n; }
}

 

class Client
{
 public static void Main()
 {
  Account a = new Account();
  a.Balance = 1000; //
可以读写属性,因为属性Balancepublic型的
  //a.balance = 1000; //
不可以读写字段,因为字段balanceprivate型的

 

  a.WithDraw(500);
  a.Deposit(2000);
  Console.WriteLine(a.Balance);
 }
}
使用接口排序(1).cs

 

using System;

using System.Collections;

public class Person : IComparable

{

               public int ID;

               public string Rank;

 

               public Person(int id, string rank)

               { this.ID=id; this.Rank = rank; }

 

               #region IComparable Members

 

               /*

                * IComparable 接口只有一个方法: CompareToCompareTo方法

                * 只接收一个object类型的参数,这意味着它可以接收任何类

                * 型的数据(object是所有类的父类),这个方法会返回一

                * 整型数值,含义如下:

                *

                * 1) 小于零,当前实例(this)小于obj对象

                * 2) 等于零,当前实例(this)等于obj对象

                * 3) 大于零,当前实例(this)大于obj对象

                *

                * Int32,Int16...,String,Decimal等数据类型都已经实现了IComparable接口

                */

               public int CompareTo(object obj)

               {

                               Person p = (Person)obj;

                               return this.ID.CompareTo(p.ID);

               }

               #endregion

}

class SortArrayList

{

               static void Main(string[] args)

               {

                               ArrayList list = new ArrayList();

                               list.Add(new Person(6, "排长"));

                               list.Add(new Person(3, "团长"));

                               list.Add(new Person(4, "司令"));

                               list.Add(new Person(5, "旅长"));

                               list.Add(new Person(7, "连长"));

                               list.Add(new Person(1, "军长"));

                               list.Add(new Person(2, "营长"));

                               list.Add(new Person(8, "师长"));

                               list.Sort();

                               Console.WriteLine("After Sorting");

                               foreach (Person person in list)

                               {

                                              Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

                               }

               }

}

使用接口排序(2).cs

using System;

using System.Collections;

public enum enuSortOrder

{IDAsc, IDDesc, RankAsc, RankDesc}

public class Person : IComparable

{

               public static enuSortOrder intSortOrder = enuSortOrder.IDAsc;

               public int ID;

               public string Rank;

               public Person(int id, string rank)

               { this.ID=id; this.Rank = rank; }

               #region IComparable Members

               /*

                * IComparable 接口只有一个方法: CompareToCompareTo方法

                * 只接收一个object类型的参数,这意味着它可以接收任何类

                * 型的数据(object是所有类的父类),这个方法会返回一

                * 整型数值,含义如下:

                *

                * 1) 小于零,当前实例(this)小于obj对象

                * 2) 等于零,当前实例(this)等于obj对象

                * 3) 大于零,当前实例(this)大于obj对象

                *

                * Int32,Int16...,String,Decimal等数据类型都已经实现了IComparable接口

                */

               public int CompareTo(object obj)

               {

                               Person p = (Person)obj;

                               switch ((int)intSortOrder)

                               {

                                              case (int)enuSortOrder.IDAsc:

                                                             return this.ID.CompareTo(p.ID);

                                              case (int)enuSortOrder.IDDesc:

                                                             return p.ID.CompareTo(this.ID);

                                              case (int)enuSortOrder.RankAsc:

                                                             return RankCompare(this.Rank, p.Rank);

                                              case (int)enuSortOrder.RankDesc:

                                                             return RankCompare(p.Rank, this.Rank);

                                              default:

                                                             return this.ID.CompareTo(p.ID);

                               }

               }

               private int RankCompare(string rank1, string rank2)

               {

                               int intRank1 = ConvertRankToInt(rank1);

                               int intRank2 = ConvertRankToInt(rank2);

                               if(intRank1 < intRank2)

                                              return -1;

                               else if(intRank1 == intRank2)

                                              return 0;

                               else

                                              return 1;

               }

               private int ConvertRankToInt(string rank)

               {

                               if(rank == "司令")

                                              return 8;

                               else if(rank == "军长")

                                              return 7;

                               else if(rank == "师长")

                                              return 6;

                               else if(rank == "旅长")

                                              return 5;

                               else if(rank == "团长")

                                              return 4;

                               else if(rank == "营长")

                                              return 3;

                               else if(rank == "连长")

                                              return 2;

                               else

                                              return 1;

               }

               #endregion

}

class SortArrayList

{

               static void Main(string[] args)

               {

                               ArrayList list = new ArrayList();

                               list.Add(new Person(6, "排长"));

                               list.Add(new Person(3, "团长"));

                               list.Add(new Person(4, "司令"));

                               list.Add(new Person(5, "旅长"));

                               list.Add(new Person(7, "连长"));

                               list.Add(new Person(1, "军长"));

                               list.Add(new Person(2, "营长"));

                               list.Add(new Person(8, "师长"));

                               list.Sort();

                               Console.WriteLine("Sort By ID Asc:");

                               foreach (Person person in list)

                               {

                                              Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

                               }

 

                               Console.WriteLine("----------------------------");

                               Console.WriteLine("Sort By ID Desc:");

                               Person.intSortOrder = enuSortOrder.IDDesc;

                               list.Sort();

                               foreach (Person person in list)

                               {

                                              Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

                               }

                               Console.WriteLine("----------------------------");

                               Console.WriteLine("Sort By Rank Asc:");

                               Person.intSortOrder = enuSortOrder.RankAsc;

                               list.Sort();

                               foreach (Person person in list)

                               {

                                              Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

                               }

                               Console.WriteLine("----------------------------");

                               Console.WriteLine("Sort By Rank Desc:");

                               Person.intSortOrder = enuSortOrder.RankDesc;

                               list.Sort();

                               foreach (Person person in list)

                               {

                                              Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

                               }

               }            

}

构造函数.cs

using System;

public class Person

{

               public string name = "";

               public int age = 0;

               //默认构造函数

               public Person()

               {

               }

               //构造函数重载(1)

               public Person(int Age)

               {

                               this.age = Age;

               }

               //构造函数重载(2)

               public Person(int Age, string Name)

               {

                               this.age = Age;

                               this.name = Name;

               }

               public void ShowInfo()

               {

                               Console.WriteLine("The name is : " + name);

                               Console.WriteLine("The age is:" + age);

               }

}

class Client

{

               public static void Main()

               {

                               Person p1 = new Person();

                               p1.ShowInfo();

                               Console.WriteLine("==========================");

                               Person p2 = new Person(30);

                               p2.ShowInfo();

                               Console.WriteLine("==========================");

                               Person p3 = new Person(30, "Tom");

                               p3.ShowInfo();

               }

}

传值调用与引用调用.cs

using System;

class MethodCall
{
 public static void Main()
 {
  /

 *

   * 参数类型分为 in, ref, out 三种,默认为 in
   * in 类型在子方法中修改了对应变量后,主方法中的值不会发生改变。
   * ref 类型在子方法中修改了对应变量后,主方法中的值也会发生改变。
   * out 主方法中对应的变量不需要初始化。
  *
  */  
  int a = 3, b = 4, c;
  Console.WriteLine("Before Method Call : a = {0}, b = {1}, c 未赋值", a, b);
  AMethod(a, ref b, out c);
  Console.WriteLine("After  Method Call : a = {0}, b = {1}, c = {2}", a, b, c);
 }

 public static void AMethod(int x, ref int y, out int z)
 {
  x = 7;
  y = 8;
  z = 9;
 }
}

 属性、方法作用范围.cs

using System;

class Base

{

               /*

                * public 的可访问范围是所有类

                * private 的可访问范围是当前类

                * protected 的可访问范围是当前类及其子类

                */

               public string name = "Tom";

               private double salary = 1500;

               protected int age = 20;

 

               public virtual void ShowInfo()

               {

                               Console.WriteLine(this.name);             //可以,因为name public 型的

                               Console.WriteLine(this.salary);            //可以,salaryprivate型,在Base类中可以访问

                               Console.WriteLine(this.age); //可以,因为ageprotected型,在子类中可以访问

               }

}

class Derived : Base

{

               public override void ShowInfo()

               {

                               Console.WriteLine(this.name);             //可以,因为name public 型的

                               //Console.WriteLine(this.salary);          //不可以,salaryprivate型,超出Base就无法访问

                               Console.WriteLine(this.age); //可以,因为ageprotected型,在子类中可以访问

               }

}

 

class Client

{

               public static void Main()

               {

                               Base b = new Base();

                               Console.WriteLine(b.name);  //可以,因为name public 型的

                               //Console.WriteLine(this.salary);          //不可以,salaryprivate型,超出Base就无法访问

                               //Console.WriteLine(this.age);             //不可以,因为ageprotected型,Client不是Base的子类

 

                               Console.WriteLine("==========================");

                               b.ShowInfo();

                               Console.WriteLine("==========================");

                               Derived d = new Derived();

                               d.ShowInfo();

               }

}

 

静态与非静态.cs

 

using System;

 

class StaticHello

{

               public static void SayHello()

               { Console.WriteLine("Static Hello"); }

}

 

class NonStaticHello

{

               public void SayHello()

               { Console.WriteLine("Non Static Hello"); }

}

 

class Client

{

               public static void Main()

               {

                               //静态方法调用应当使用类名.方法

                               StaticHello.SayHello();

 

                               //非静态方法调用应当使用实例名称.方法

                               NonStaticHello h = new NonStaticHello();

                               h.SayHello();

               }

}

 

 

一加到一百.cs

using System;

class SumToHundred
{
 public static void Main()
 {
  int sum=0;
  for(int i=1; i<=100; i++)
   sum += i;
  Console.WriteLine(sum);
 }
}
九九表.cs

using System;

public class JiuJiuBiao
{
 public static void Main(string[] args)
 {
  int i,j;
  for(i=1; i<10; i++)
  {
   for(j=1; j<10; j++)
   {
    Console.Write("{0:D1}*{1:D1}={2,2}  ", i, j, i*j);
   }
   Console.WriteLine("");
  }
  Console.ReadLine();
 }
}

冒泡法排序.cs

 

 

 

using System;

 

class ArraySort

{

               public static void Main()

               {

                               int[] d = {10,15,21,43,17,98,2,74,63,10};

                               int temp;               

 

                               //冒泡法排序

                               for(int i=0; i<d.Length; i++)

                                              for(int j=i+1; j<d.Length; j++)

                                                             if(d[i]<d[j])

                                                             {

                                                                            temp = d[i];

                                                                            d[i]=d[j];

                                                                             d[j]=temp;

                                                             }

 

                               //输出排序结果

                               foreach(int i in d)

                                              Console.Write("{0}, ", i);

               }

}

 

递归求阶乘.cs

 

using System;

 

class Factor

{

               public static void Main()

               {

                               for(int i=1; i<=10; i++)

                                              Console.WriteLine("{0} 的阶乘是 {1}",i, Factorial(i));

               }

               public static long Factorial(long n)

               {

                               if(n == 1)

                                              return 1;

                               else

                                              return n * Factorial(n-1);

               }

}

 

 

 

 

打印三角形.cs

 

 

 

using System;

 

public class Hello

{

               public static void Main()

               {

                               Console.Write("请输入行数:");

                               int lines = int.Parse(Console.ReadLine());

                               Console.WriteLine("");

 

                               for(int i=1; i<=lines ; i++)

                               {

                                              for(int k=1; k<= lines-i; k++)

                                                             Console.Write(" ");

 

                                              for(int j=1; j<=i*2+1; j++)

                                                             Console.Write("*");

                                              Console.WriteLine("");

                               }

                               Console.ReadLine();

               }

}

 

求质数.cs

using System;

 

class Factor
{
 public static void Main()
 {
  for(int i=1; i<=100; i++)
   if(IsPrime(i))
                Console.WriteLine(i);
 }

 

 public static bool IsPrime(int n)
 {
  for(int i=2; i<=Math.Sqrt(n); i++)
   if(n%i == 0)
    return false;

 

  return true;
 }

 

方法重载.cs

 using System;

 

class Client

{

               public static void Main()

               {

                               //重载是指方法名相同,方法的签名不同

                               Console.WriteLine(Add(10,5));

                               Console.WriteLine(Add("10","5"));      

               }

 

               public static string Add(string a, string b)

               {

                               return a + " add " + b;

               }

 

               public static int Add(int a, int b)

               {

                               return a+b;

               }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值