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关键字

cs 复制代码
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));
        }
    }
}
相关推荐
本尊是喵6 分钟前
AutoDL--FileZilla--VS Code远程连接
运维·服务器
XUHUOJUN19 分钟前
Windows Server 2025 RAC vs Stretch Cluster 技术定位
windows·microsoft·azure local
网络小白不怕黑32 分钟前
11.虚拟机模拟路由器实验
linux·运维·服务器·网络
Mapleay39 分钟前
Linux 内核编程基础
linux·运维·服务器
小则又沐风a42 分钟前
深入理解文件系统(二)
java·服务器·前端
天蓝的想1 小时前
Kueue 如何管理 DRA 模式下的 GPU 配额
运维·服务器
sg_knight2 小时前
Claude Code 安装指南(macOS / Linux / Windows WSL)
linux·windows·macos·claude·code·anthropic·claude-code
恒53910 小时前
Linux文件系统I
linux·运维·服务器
阿成学长_Cain10 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库
落寞的星星10 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#