c#类成员(字段、属性、方法、事件)

news/2024/7/8 5:08:47 标签: c#, output, string, class, 程序开发, 图形
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views"> 类成员
在C#中,类包含若干个组成成员,这些组成成员包括字段、属性、方法、事件等,这些组成成员能够彼此协调用于对象的深入描述。
1.字段
“字段”是包含在类中的对象的值,字段使类可以封装数据,字段的存储可以满足类设计中所需要描述。例如上一节中Animal类中的字段color,就是用来描述动物的颜色。当然,Animal的特性不只颜色,可以声明多个字段描述Animal类的对象,示例代码如下所示。
    class Animal
    {
        public class="tags" href="/tags/STRING.html" title=string>string color;           //声明颜色字段
        public bool haveFeather;          //声明是否含有羽毛字段
        public int age;            //年龄字段
    }
上述代码中,对Animal类声明了另外两个字段,用来描述是否有羽毛和年龄。当需要访问该类的字段的时候,需要声明对象,并使用点“.”操作符实现,Visual Studio 2008中对“.”操作符有智能提示功能,示例代码如下所示。
            Animal bird = new Animal();         //创建对象
            bird.haveFeather = true;         //鸟有羽毛
            bird.color = "black";          //这是一只黑色的鸟
2.属性
C#中,属性是类中可以像类的字段一样访问的方法。属性可以为字段提供保护,避免字段在用户创建的对象不知情的情况下下被更改。属性机制非常灵活,提供了读取、编写或计算私有字段的值,可以像公共数据成员一样使用属性。
在C#中,它们被称为“访问器”,为C#应用程序中类的成员的访问提供安全性保障。当一个字段的权限为私有(private)时,不能通过对象的“.”操作来访问,但是可以通过“访问器”来访问,示例代码如下所示。
    public class Animal
    {
        private int _age;             //定义私有变量
        public int Age { get { return _age; } set { _age = value; } }     //赋值属性
    }
上述代码中为Animal类声明了一个属性Age,在主程序中,同样可以通过“.”操作符来访问属性,示例代码如下所示。
            Animal bird = new Animal();          //创建对象
            bird.Age = 1;            //Age访问了_age
在Visual Studio 2008中,属性的声明被简化,不再需要冗长的声明,示例代码如下所示。
    public class Animal             //创建类
    {
        public int Age { get; set; }           //简便的属性编写
    }
注意:虽然在VS2008中,简化了代码,但是实现的过程依旧没有改变。
3.方法
方法用来执行类的操作,方法是一段小的代码块。在C#中,方法接收输入的数据参数,并通过参数执行函数体,返回所需的函数值,方法的语法如下所示。
        私有级别 返回类型 方法名称(参数1,参数2)
        {
            方法代码块。
        }
方法在类中声明。对方法的声明,需要指定访问级别、返回值、方法名称以及任何必要的参数。参数在方法名称后的括号中,多个参数用逗号分割,空括号表示无参数,示例代码如下所示。
        public class="tags" href="/tags/STRING.html" title=string>string class="tags" href="/tags/OUTPUT.html" title=output>output()           //一个无参数传递的方法
        {
            return "没有任何参数";          //返回字符串值
        }
        public class="tags" href="/tags/STRING.html" title=string>string out_put(class="tags" href="/tags/STRING.html" title=string>string class="tags" href="/tags/OUTPUT.html" title=output>output)        //一个有参数传递的方法
        {
            return class="tags" href="/tags/OUTPUT.html" title=output>output;           //返回参数的值
        }
上述代码中,创建了两个方法,一个是无参数传递方法class="tags" href="/tags/OUTPUT.html" title=output>output和一个参数传递的方法out_put,在主函数中可以调用该方法,调用代码如下所示。
            Animal bird = new Animal();         //创建对象
            bird.out_put();           //使用无参数的方法
            class="tags" href="/tags/STRING.html" title=string>string str = "我是一只鸟";         //创建字符串用于参数传递
            bird.out_put(str);           //使用有参数的方法
如上述代码所示,主函数调用了一个方法out_put,并传递了参数“我是一只鸟”。在使用类中的方法前,将“我是一只鸟”赋值给变量str,传递给out_put函数。在上述代码中,“我是一只鸟”或者str都可以作为参数。
在应用程序开发中,方法和方法之间也可以互相传递参数,一个方法可以作为另一个方法的参数,方法的参数还可以作为另一个方法的返回值,示例代码如下所示。
        public class="tags" href="/tags/STRING.html" title=string>string class="tags" href="/tags/OUTPUT.html" title=output>output()           //一个无参数传递的方法
        {
            return "没有任何参数";          //返回字符串
        }
        public class="tags" href="/tags/STRING.html" title=string>string out_put()           //使用其他方法返回值的方法
        {
            class="tags" href="/tags/STRING.html" title=string>string str = class="tags" href="/tags/OUTPUT.html" title=output>output();          //使用另一个方法的返回值
            return str;            //返回方法的返回值
        }
如上述代码所示,out_put使用了class="tags" href="/tags/OUTPUT.html" title=output>output方法,class="tags" href="/tags/OUTPUT.html" title=output>output返回一个字符串“没有任何参数”。在out_put方法中,使用了class="tags" href="/tags/OUTPUT.html" title=output>output方法,并将class="tags" href="/tags/OUTPUT.html" title=output>output方法的返回值赋给str局部变量,并返回局部变量。在方法的编写中,方法和方法之间可以使用同一个变量而互不影响,因为方法内部的变量是局部变量,示例代码如下所示。
        public class="tags" href="/tags/STRING.html" title=string>string class="tags" href="/tags/OUTPUT.html" title=output>output()           //一个无参数传递的方法
        {
            class="tags" href="/tags/STRING.html" title=string>string str = "没有任何参数";         //声明局部变量str
            return str;            //使用局部变量str
        }
        public class="tags" href="/tags/STRING.html" title=string>string out_put()           //一个无参数传递的方法
        {
            class="tags" href="/tags/STRING.html" title=string>string str = "还是没有任何参数";        //声明局部变量str
            return str;            //使用局部变量str
        }
如上述代码所示,class="tags" href="/tags/OUTPUT.html" title=output>output和out_put方法都没有任何参数,但是却使用了同一个变量str。str是局部变量,str的作用范围都在该变量声明的方法内,称作“作用域”。创建了一个方法,就必须指定该方法是否有返回值。如果有返回值,则必须指定返回值的类型,示例代码如下所示。
        public int sum(int number1, int number2)       //必须返回int类型的值
        {
            return number1 + number2;         //返回一个int类型的值
        }
        public void newsum(int number1, int number2)      //void表示无返回值
        {
            int sum = number1 + number2;        //没有返回值则不能返回值
        }
上述代码中,声明了两个方法,分别为sum和newsum。sum方法中,声明了该方法是共有的返回值为int的方法,而newsum方法声明了是共有的无返回值方法。
4.事件
事件是一个对象向其他对象提供有关事件发生的通知的一种方式。在C#中,事件是使用委托来定义和触发的。类或对象可以通过事件向其他类或对象通知发生的相关事情。发送或引发事件的类称为“发行者”,接收或处理事件的类称为“订阅者”。例如在Web Form中双击按钮的过程,就是一个事件,控件并不对过程做描述,只是负责通知一个事件是否发生。事件具有以下特点:
事件通常使用委托事件处理程序进行声明。
事件始终通知对象消息并指示需要执行某种操作的一种方式。
发行者确定何时引发事件,订阅者确定执行何种操作来响应该事件。
一个事件可以有多个订阅者。一个订阅者可处理来自多个发行者的多个事件。
没有订阅者的事件永远不会被调用。
事件通常用于通知用户操作,例如,图形用户界面中的按钮单击或菜单选择操作。
如果一个事件有多个订阅者,当引发该事件时,会同步调用多个事件处理程序,也可以使用异步处理多个事件。
声明委托和事件的示例代码如下所示。
    public delegate void AnimalEventHandler();       //声明委托
    public class Animal            //创建类
    {
        public event AnimalEventHandler OnFly;       //声明事件
        public void Fly()            //创建类的方法
        {
            OnFly();            //使用事件
        }
    }
上述代码定义了一个委托,并针对相关委托声明了一个方法。关于委托和事件,会在后面的章节中讲到,上述代码在主函数调用代码如下所示。
            Animal bird = new Animal();         //创建对象
            bird.OnFly += new AnimalEventHandler(TestAnimal);    //注册事件
            bird.Fly();            //使用方法

http://www.niftyadmin.cn/n/790794.html

相关文章

spingsecurity 相关文档

mall整合SpringSecurity和JWT实现认证和授权(一) http://spring security实现动态配置url权限的两种方法 SpringSecurity代码实现JWT接口权限授予与校验 springbootsecurity实现权限管理spring security的UserDetail实现

各个系统下ping IP+端口的方法

前言 做开发的人员,可能都会遇到网络的一些问题。这时一般都需要测试指定的网络是否能正常访问。通常在windows系统下,在cmd里直接用命令ping指定的IP或者域名就可以快速的知道这个地址是否是可以访问通不通的。 但是如果一个服务器上启动着好几个项目…

C#委托的同步调用、异步调用、异步回调

本文将主要通过“同步调用”、“异步调用”、“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊。 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间 using System.Threading; using System.Runt…

SpringBoot项目修改内置tomcat版本

1.直接改starter <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><…

Debug与Trace的区别

一.首先要明白Debug与Trace的区别&#xff1a; 1. Debug.Write和Trace.Write有什么不同&#xff1f;何时应该使用哪一个&#xff1f; Debug类提供一组帮助调试代码的方法和属性。Trace类提供一组帮助跟踪代码执行的方法和属性&#xff0c;通俗的说就是为在不打断程序的调试或跟…

SpringBoot 如何实现AOP的权限控制

https://blog.csdn.net/ideaxx/article/details/89386855

俄罗斯方块游戏算法分析

该游戏算法比较简单&#xff0c;主要功夫都在界面体验上了&#xff0c;比如方块图形、用户控制、消去与累计等。图形我们采用GDI画图方式显示&#xff0c;共8种图形&#xff0c;当然可以根据自己的喜好随意定制。如何表示图形&#xff1f;我们可以借鉴马赛克效果。把所有图形都…

使用 patch-package 修改第三方模块

使用 patch-package 修改第三方模块&#xff0c;及时解决第三方依赖包的 bug 安装 1 2 3 4 5 6# npm npm install patch-package --save-dev# yarn yarn add --dev patch-package postinstall-postinstall创建补丁 直接在项目根目录下的 node_modules 文件夹中找到要修改依赖…