当前位置: 首页 > article >正文

C#的属性和方法

/C#中的属性:一种是在公共语言运行库的基类中定义的属性
//另一种是自己创建,可以向代码中添加附加信息的自定义属性

//自定义属性的声明方法:
//指定属性的访问级别---属性的类型---属性的名称---声明get访问器(或)set访问器的代码模块
/*
 *属性定义的语法格式
 *
 *访问修饰符  数据类型  属性名
 *{ 
 *    get
 *    {
 *      return 变量名;
 *    }
 *    set
 *    {
 *      变量名 = value ;
 *    }
 *}
 *
 *关于房屋内修饰符的说明
 *
 *private-----访问仅限制在声明它的类型的内部
 *       -----派生类也不能访问积累的private属性
 *protected ----可以被其所在类的实列(非继承)访问
 *          ----也可以杯同一程序集中的任何派生类访问
 *public ----不限制
 *internal---访问仅仅现在在当前的程序集合中
 *        ---派生类位于同一个程序集合中可以访问基类的internal属性
 */

    //方法
    //方法是包含一系列语句的代码块,每个执行指令都是在方法的上下文中完成的
    //方法声明包含private,public protected,internal
    //还包含new,static, virtual,override,sealed,abstract,extern
    /*
     * 方法的参数类型
     * 调用方法时可以给方法传递一个或多个值,传给方法的值叫做实参
     * 在方法内部接收实参的变量叫做形参,形参在紧跟着方法名的括号中声明
     * 声明方法参数时,可以通过关键字params,ref和out实现
     * 1:params参数用来指定在参数数目可变时采用的方法参数,params参数必须是一维数组
     * */

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

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


//C#中的属性:一种是在公共语言运行库的基类中定义的属性
//另一种是自己创建,可以向代码中添加附加信息的自定义属性

//自定义属性的声明方法:
//指定属性的访问级别---属性的类型---属性的名称---声明get访问器(或)set访问器的代码模块
/*
 *属性定义的语法格式
 *
 *访问修饰符  数据类型  属性名
 *{ 
 *    get
 *    {
 *      return 变量名;
 *    }
 *    set
 *    {
 *      变量名 = value ;
 *    }
 *}
 *
 *关于房屋内修饰符的说明
 *
 *private-----访问仅限制在声明它的类型的内部
 *       -----派生类也不能访问积累的private属性
 *protected ----可以被其所在类的实列(非继承)访问
 *          ----也可以杯同一程序集中的任何派生类访问
 *public ----不限制
 *internal---访问仅仅现在在当前的程序集合中
 *        ---派生类位于同一个程序集合中可以访问基类的internal属性
 */
namespace AttributeAndMethodDemo1
{
    class MyClass
    {
        private string id = "";
        private string name = "";

        //属性的声明
        public string ID  //定义用户编号属性,该属性可读可写
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        public string Name  //星期属性,可读可写
            //Name只是一个代码,其他的也可以,为了便于阅读,可以用有意义的单词
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }

        //Params方法
        //params参数用来指定在参数数目可变时,采用的方法参数,params参数必须是一维数组
        public void UseParams(params string[] list)
        {
            for(int i= 0; i<list.Length; i++)
            {
                Console.Write(list[i]+ " ");
            }
        }

        //ref参数
        //ref参数使方法参数按引用传递,其效果是:当控制权传递回调用方法时,在方法中对参数
        //所作的任何更改都将反映在该变量中,如果要使用ref参数,则方法声明和调用方法都必须
        //显式使用ref关键字
        public void RefMethod(ref int i)
        {
            i = 100;
        }

        //out参数
        //out关键字用来定义输出参数,它会导致参数通过引用来传递,这与ref参数类似,不同之处在于
        //ref要求变量必须在传递之前进行初始化,而使用out关键字定义的参数,不用进行初始化
        //即可使用,如果要使用out参数,则方法声明和调用方法都必须显式使用out关键字
        public void OutMethod(out int m)
        {
            m = 200;
        }

        //方法的分类
        //方法分成:静态方法和非静态方法
        //static修饰的为静态方法
        public static int Add(int i, int j)
        {
            return i + j;
        }

        //方法的重载
        //定义:指方法名称相同,但参数的数据类型、个数或顺序不同的方法
        public static double Add(double x, double y)
        {
            return x + y;
        }
        public int Add( int m, int n, int l)
        {
            return m + n + l;
        }
    }

    //属性的使用
    //  对象名称.属性名

    //方法
    //方法是包含一系列语句的代码块,每个执行指令都是在方法的上下文中完成的
    //方法声明包含private,public protected,internal
    //还包含new,static, virtual,override,sealed,abstract,extern
    /*
     * 方法的参数类型
     * 调用方法时可以给方法传递一个或多个值,传给方法的值叫做实参
     * 在方法内部接收实参的变量叫做形参,形参在紧跟着方法名的括号中声明
     * 声明方法参数时,可以通过关键字params,ref和out实现
     * 1:params参数用来指定在参数数目可变时采用的方法参数,params参数必须是一维数组
     * */
    internal class Program
    {
        //Main方法的默认访问级别为private
        static void Main(string[] args)
        {
            MyClass mc = new MyClass();
            mc.ID = "DYJ";
            mc.Name = "DENG";
            Console.WriteLine(mc.Name);
            string[] arrayStr = new string[] {"11","22","33","44","55" };
            mc.UseParams(arrayStr);
            Console.WriteLine();
            int x = 50;
            //调用方法之前X的值
            Console.WriteLine("调用ref方法之前X的值为:");
            Console.WriteLine(x);
            //调用ref方法
            mc.RefMethod(ref x); //必须和ref关键字一起传递
            Console.WriteLine("调用了ref犯法之后的X的值为:");
            Console.WriteLine(x);

            int out_param;
            mc.OutMethod(out out_param);
            Console.WriteLine("调用了out参数方法之后的out_param的值为:" +  out_param);
            Console.WriteLine();

            //调用静态方法
            Console.WriteLine("调用MyClass的静态方法:Add,结果为:{0}",MyClass.Add(100, 200));

            Console.WriteLine("方法重载1:" + mc.Add(100,200,300));
            Console.WriteLine("方法重载1:" + MyClass.Add(10.5, 12.5));
        }
    }
}


http://www.kler.cn/a/300691.html

相关文章:

  • 用公网服务器实现内网穿透
  • PG vs MySQL mvcc机制实现的异同
  • minio https配置
  • MyBatis(四)参数与配置详解
  • 【算法】枚举
  • 云手机技术怎么实现的?
  • opencv羊群计数,动态目标检测跟踪
  • List集合特点,遍历方式,ArrayList(去重原理,增长因子论,LinkedList)
  • 【Kubernetes】常见面试题汇总(十一)
  • milvus的二进制文件集群部署
  • 区块链当前发展和未来展望
  • 【微服务】⭐️华为云obs功能抽取到公共服务,供所有项目使用
  • 【机器学习】马尔可夫随机场的基本概念、和贝叶斯网络的联系与对比以及在python中的实例
  • JS设计模式之装饰者模式:优雅的给对象增添“魔法”
  • 健身房|基于springboot的健身房管理系统设计与实现(附项目源码+论文+数据库)
  • Python数据分析与可视化
  • leetcode hot100_part01_哈希
  • Spring和Spring FrameWork有什么关系?两者是同一个东西吗?
  • 白帽SEO搜索引擎pc端怎么引流
  • Chrome和Chromium浏览器有什么不同?
  • knowLedge-在组件的第一次创建时执行某个方法,而在后续的创建中不执行:
  • 智能路口安全预警系统:精准提醒降低事故发生率
  • 继收购西门子物流自动化后,丰田又投资一家AGV公司,智能物流版图已极其夸张...
  • less和css在写法上有什么区别吗?
  • yield return request.SendWebRequest()
  • 9.11近日工作踩坑