5.17学习笔记

代码重用
        static int InputNum(int max)
        {

            #region 没有重用
            //for (int i = 0; i <= max; i++)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion
            return InputNum(0, max);
        }

        static int InputNum()
        {
            #region 没有考虑重用
            //string str = "";
            //int num = 0;
            //while (true)
            //{
            //    str = Console.ReadLine();
            //    if (int.TryParse(str, out num))
            //    {

            //        break;
            //    }
            //    else
            //    {
            //        Console.WriteLine("输入有误,重新输入:");
            //    }
            //}
            //return num;
            #endregion
            return InputNum(int.MinValue,int.MaxValue);
        }

        static int InputNum(int min, int max)
        {
            string str = "";
            int num = 0;
            while (true)
            {
                str = Console.ReadLine();
                try
                {
                    num = Convert.ToInt32(str);
                    if (num >= min && num <= max)
                    {
                        break;
                    }
                    else
                    {
                        if (num < min)
                        {
                            Console.WriteLine("小于范围");
                        }
                        else
                        {
                            Console.WriteLine("大于范围");
                        }
                    }
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }

            return num;
        }    

方法重载
    方法的重载并不是一个方法
    实际上方法重载就是一些不同的方法,目的是方便程序员编码,所以将功能相近的方法命名相同
    根据参数,编译器自动去匹配方法体,而不需要程序员记住所有的方法
    
如何判断重载写的对不对
    ->将方法的定义拿出来,去掉修饰符,去掉方法体,去掉返回类型
        InputNum()
        InputNum(int max)
        InputNum(int min,int max)
    ->将参数列表的局部变量名去掉,只留类型
        InputNum()
        InputNum(int)
        InputNum(int,int)
        
===========================================================
继承
    单根性、传递性、派生于object类(C#)
    
在创建对象的时候,好像是先调用    父类的构造方法,在调用子类的构造方法
在调用构造方法的时候,其实默认有一个base(),调用了父类的无参构造方法


->this关键字
    ->表示当前类
    ->表示当前构造方法(指定先调用哪一个当前类的构造方法)
->base关键字
    ->表示父类
    ->表示父类构造方法(指定首先调用哪一个父类构造方法)
    
    
    
    
=======================================
成员访问修饰符
internal 与 public 在当前项目下,似乎都是一样的
internal 当前项目
protected internal     

类的访问修饰符
public internal

访问级别约束中第2条
字段与属性的访问级别不能高于对应成员的访问级别(就是指类型为internal,但是写的一个public 类中包含该类型的字段或属性)
在不同的项目中访问的思路
internal class M
{
        
}

public class N
{
    public M m;
}

========================================
父类与子类方法同名_隐藏基类方法(一个环境在不同状态下,方法的实现)
1、子类直接赋值给父类(隐藏看类型)(子类对象可以 直接转化为 父类对象)
MyBase myBase = new MySub();

((MyBase)sub).Func();sub.Func();

new 则隐藏,over 重写
隐藏看类型,重写只管新

2、如果满足第一个条件的父类对象,可以强制转化为原来的子类对象
protocal = new iPhone();
iPhone i = (iPhone)protocal;

{
    父类 父类对象 = new 子类();
    ...
    子类 子类对象 = (子类)父类对象;}
    子类 子类对象 = (子类)父类对象;
}
重载是伪多态

==============================================
使用ref和out都可以将参数传入方法,并保留在方法中对参数赋值时的影响
即参数在方法中被修改了,方法结束后,结果仍然保留方法中最后一次修改的值

ref reference 引用表示方法中用的是变量的引用,就是快捷方式
out            参数用来输出,即方法中对变量的修改就是为了让其输出到外边

ref 使用时要赋值
out 方法中要赋值


转载于:https://www.cnblogs.com/wiewookahn/archive/2012/05/27/2520343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值