• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#面向对象程序设计复习

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  字段与属性.cs
  属性、方法作用范围.cs
  一加到一百.cs
  使用接口排序(2).cs
  使用接口排序(1).cs
  求质数.cs
  冒泡法排序.cs
  九九表.cs
  静态与非静态.cs
  构造函数.cs
  方法重载.cs
  多态性.cs
  递归求阶乘.cs
  打印三角形.cs
  传值调用与引用调用.cs


 

字段与属性.cs

代码
using System;

class Account
{
    
private double balance = 0;        //字段
    public double Balance            //属性
    {
        
get { return balance; }
        
set { balance = value; }
    }
    
/*=============================================================
     * 我们可以通过修改get、set方法达到控制存取的目的。
     * 例如:
     * 
     * 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;    // 可以读写属性,因为属性Balance是public型的
        
//a.balance = 1000;    //不可以读写字段,因为字段balance是private型的

        a.WithDraw(
500);
        a.Deposit(
2000);
        Console.WriteLine(a.Balance);
    }
}

 

属性、方法作用范围.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);    //可以,salary是private型,在Base类中可以访问
        Console.WriteLine(this.age);    //可以,因为age是protected型,在子类中可以访问
    }
}

class Derived : Base
{
    
public override void ShowInfo()
    {
        Console.WriteLine(
this.name);    //可以,因为name是 public 型的
        
//Console.WriteLine(this.salary);    //不可以,salary是private型,超出Base就无法访问
        Console.WriteLine(this.age);    //可以,因为age是protected型,在子类中可以访问
    }
}

class Client
{
    
public static void Main()
    {
        Base b 
= new Base();
        Console.WriteLine(b.name);    
//可以,因为name是 public 型的
        
//Console.WriteLine(this.salary);    //不可以,salary是private型,超出Base就无法访问
        
//Console.WriteLine(this.age);    //不可以,因为age是protected型,Client不是Base的子类

        Console.WriteLine(
"==========================");
        b.ShowInfo();
        Console.WriteLine(
"==========================");
        Derived d 
= new Derived();
        d.ShowInfo();
    }
}

 

 

一加到一百.cs

代码
using System;

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

 

 

使用接口排序(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 接口只有一个方法: CompareTo。CompareTo方法 
     * 只接收一个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);
        }
    }
}

 

 

使用接口排序(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 接口只有一个方法: CompareTo。CompareTo方法 
     * 只接收一个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);
        }
    }
}

 

 

求质数.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 ArraySort
{
    
public static void Main()
    {
        
int[] d = { 1015214317982746310 };
        
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;

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 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;

public class Person
{
    
public string name 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
推荐.Net、C# 逆向反编译四大工具利器发布时间:2022-07-10
下一篇:
在C#使用MongoDB发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap