• C#知识点简单回顾(有图有真相)


    1)传值调用与引用调用

    using System;
    
    class MethodCall
    {
        public static void Main() 
        {
            /*
             * 参数类型分为 in, ref, out 三种,默认为 in。
             * in 类型在子方法中修改了对应变量后,主方法中的值不会发生改变。
             * ref 类型在子方法中修改了对应变量后,主方法中的值也会发生改变。
             * out 主方法中对应的变量不需要初始化。
             * 
             */        
            int a = 1, b = 2, 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);
    
            Console.Read();
        }
    
        public static void AMethod(int x, ref int y, out int z)
        {
            x = 110;
            y = 120;
            z = 119;
        }
    }

    效果图:

     2)打印三角形

    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();
        }
    }

    效果图:

     3)递归求阶乘

    using System;
    
    class Factor
    {
        public static void Main()
        {
            for(int i=1; i<=10; i++)
                Console.WriteLine("{0} 的阶乘是 {1}",i, Factorial(i));
    
    
            Console.Read();
        }
        public static long Factorial(long n)
        {
            if(n == 1)
                return 1;
            else
                return n * Factorial(n-1);
        }
    }

    效果图:

    4)多态性

    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方法
    
    
            Console.Read();
        }
    }

    效果图:

    5)方法重载

    using System;
    
    class Client
    {
        public static void Main()
        {
            //重载是指方法名相同,方法的签名不同
            Console.WriteLine(Add(100,50));
            Console.WriteLine(Add("100","50"));
    
            Console.Read();
        }
    
        public static string Add(string a, string b)
        {
            return a + " add " + b;
        }
    
        public static int Add(int a, int b)
        {
            return a+b;
        }
    }

    效果图:

    6)构造函数

    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("姓名:" + name);
            Console.WriteLine("年龄:" + age);
        }
    }
    
    class Client
    {
        public static void Main()
        {
            Person p1 = new Person();
            p1.ShowInfo();
    
            Console.WriteLine("*************************");
    
            Person p2 = new Person(25);
            p2.ShowInfo();
    
            Console.WriteLine("*************************");
            Person p3 = new Person(25, "爱智旮旯");
            p3.ShowInfo();
    
    
    
            Console.Read();
        }
    }

    效果图:

    7)静态与非静态

    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();
    
    
            Console.Read();
        }
    }

    效果图:

    8)九九表

    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();
        }
    }

    效果图:

    9)冒泡法排序

    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);
    
    
    
            Console.Read();
        }
    }

    效果图:

    10)求质数

    using System;
    
    class Factor
    {
        public static void Main()
        {
            for(int i=1; i<=100; i++)
                if(IsPrime(i))
                    Console.WriteLine(i);
    
    
            Console.Read();
        }
    
        public static bool IsPrime(int n)
        {
            for(int i=2; i<=Math.Sqrt(n); i++)
                if(n%i == 0)
                    return false;
    
            return true;
        }
    }

    效果图:

    11)使用接口排序(1)

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

    效果图:

    12)使用接口排序(2)

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

    效果图:

    13)属性、方法作用范围

    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();
        }
    }

    14)一加到一百

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

    效果图:

    15)字段与属性

    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);
        }
    }
  • 相关阅读:
    拓端tecdat|R语言多变量广义正交GARCH(GOGARCH)模型对股市高维波动率时间序列拟合预测
    拓端tecdat|MATLAB用Lasso回归拟合高维数据和交叉验证
    【视频】线性混合效应模型(LMM,Linear Mixed Models)和R语言实现案例
    R语言样条曲线、分段线性回归模型piecewise regression估计个股beta值分析收益率数据
    Nacos极简教程
    解决SpringBoot连接Nacos集群报400问题
    SpringBoot整合Nacos自动刷新配置
    openssl
    Centos docker服务启动失败 A dependency job for docker.service failed
    php变量当做boolean
  • 原文地址:https://www.cnblogs.com/52net/p/2653723.html
Copyright © 2020-2023  润新知