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


      字段与属性.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 = "";
        
    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 Client
    {
        
    public static void Main()
        {
            
    //重载是指方法名相同,方法的签名不同
            Console.WriteLine(Add(105));
            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;
        }
    }


    多态性.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();    
    //多态性决定着将调用Truck的Drive方法
        }
    }

    递归求阶乘.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 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;
        }
    }


     

  • 相关阅读:
    第十章 迭代器模式 Iterator
    第四章:使用Proxy代理让客户端服务端分工合作。
    第三章:真正弄清楚一个Mod的组织结构
    第二章:开始开发mod前你需要知道的一些事情
    第一章:在IDEA里搭建基于Forge的Minecraft mod开发环境
    Android实现真正的ViewPager【平滑过渡】+【循环滚动】!!!顺带还有【末页跳转】。
    关于坑爹的PopupWindow的“阻塞”争议问题:Android没有真正的“阻塞式”对话框
    快排-Go版本
    链表翻转(按K个一组)(Go语言)
    牛客刷题-重建二叉树(GO语言版)
  • 原文地址:https://www.cnblogs.com/timy/p/1619735.html
Copyright © 2020-2023  润新知