属性&方法

属性

访问修饰符:用来确定属性的可用范围
public:不限制对该属性的访问
protected:只能从其所在类和所在的子类(派生类)进行访问
internal:只有其所在类才能访问
private:私有访问修饰符,自能在其声明类中使用

get访问器与方法体相类似,它必须返回属性类型的值;
而set访问器类似于返回类型为void的方法,它使用称为value的隐式参数,此参数的类型是属性类型

namespace ConsoleApp1
{
   class MyClass
    {
        private string id = ""; //定义变量,用来记录用户编号
        private string name = ""; //定义变量,用来记录用户姓名
        public string ID //定义用户编号属性,该属性为可读可写属性
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        public string Name //定义用户姓名属性,为可读可写属性
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
    }

    class Program
    {
        static void Main()
        {
            MyClass myclass = new MyClass();
            myclass.ID = "A001";
            myclass.Name = "TM1";
            Console.WriteLine(myclass.ID + " " + myclass.Name);

        }
    }
}

方法

方法声明可以包含一组特性和private、public、protected、internal 4个访问修饰符的任何一个有效组合,还可以包含new、static、virtual、override、sealed、abstract以及extern等修饰符
该声明最多包含下列修饰符中的一个:static、virtual和override
该声明最多包含下列修饰符中的一个:new,override
如果该声明包含abstract,则不能包含:static、virtual、sealed、extern
如果包含private,则不能包含virtual、override、abstract
如果包含sealed,还该包含override
对于abstract和extern方法,方法主体智能包含一个分号

方法的参数类型
传给方法的值叫实参,在方法内部
接收实参的变量叫形参,形参在紧跟着方法名的括号中声明,形参只在括号内有效

1、params参数
paramas参数用来指定在参数数目可变时蚕蛹的方法参数,params参数必须是一维数组

namespace ConsoleApp1
{
    class program
    {
        static void UseParams(params string[] list)
        {
            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
        }
        static void Main()
        {
            string[] strName = new string[5] { "一", "二", "三", "四", "五" };
            UseParams(strName);
        }
    }
}

2、ref参数
ref参数使用发发参数按引用传递,其效果是:当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反应在该变量中,如果要使用ref参数,则方法声明和调用方法都必须显式使用ref关键字。

namespace ConsoleApp1
{
    class program
    {
        public static void Method(ref int i)
        {
            i = 44;
        }
        public static void Main()
        {
            int val = 0;
            Method(ref val);
            Console.WriteLine(val);
        }
    }
}

3、out参数
out关键字用来定义输出参数,它会导致参数通过引用来传递,这与ref关键字类似,不同之处子啊与ref要求变量必须在传递之前进行初始化,而out关键字定义的参数,不用进行初始化即可使用。
如果要使用out参数,则方法声明和调用方法都必须显式使用out关键字。

namespace ConsoleApp1
{
    class program
    {
        public static void Method(out int i)
        {
            i = 44;
        }
        public static void Main()
        {
            int value;
            Method(out value);
            Console.WriteLine("输出参数:" + value);
        }
    }
}

输出参数:44

方法的分类

1、静态方法
不对特定实例进行操作,调用时,需要直接使用类名进行调用

namespace ConsoleApp1
{
    class program
    {
        public static int Add(int x, int y)
        {
            return x + y;
        }
        static void Main()
        {
            Console.WriteLine("结果为:" + program.Add(2, 3));
        }
    }
}

非静态方法
非静态方法是对类的某个给定的实例进行操作,调用时,需要使用类的实例(对象)进行调用

namespace ConsoleApp1
{
    class Program
    {
        public int Add(int x, int y)
        {
            return x + y;
        }
        static void Main()
        {
            Program program = new Program();
            Console.WriteLine("结果为:" + program.Add(3,5));
        }
    }
}

何时用静态方法,何时用实例方法:
1.一个方法和他所在类的实例对象无关,不依赖new出来的实例,那么它就应该是静态的
2.不需要面向对象的理念的时候用静态;比如动物-> RUN ,因为你可能会扩展出猫 run、狗 run,这时候就需要用非静态的方法

方法的重载

方法重载时指方法名相同,但参数的数据类型、个数或顺序不同的方法。只要类中有两个以上的同名方法,但是使用的参数类型、个数或顺序不同,调用时编译器即可判断在那种情况下调用哪种方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值