欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# 类的成员——字段、方法、构造函数和属性

程序员文章站 2022-03-09 08:13:48
...

——
声明:本文内容系互联网整理收集,内容有改动。主要参考资料:
https://www.runoob.com/csharp/csharp-tutorial.html 菜鸟教程
https://docs.microsoft.com/zh-cn/dotnet/csharp/ Microsoft C#文档
零散的资料在每章节末尾给出。
————

类描述了一组有相同属性和相同方法的对象。

0类的成员

类的成员如下图所示:
C# 类的成员——字段、方法、构造函数和属性本文主讲字段、方法和属性

1方法

一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类,要使用一个方法,需要定义方法并调用方法。
方法的定义模板:

<Access Specifier> <Return Type> <Method Name>(Parameter List)//访问修饰符;返回类型;方法名称;参数列表
{
   Method Body//方法主体
}  //template
——
class Shape//定义类
   {
      public void setWidth(int w)//定义方法
      {
         width = w;
      }
   } //example

方法可以用访问修饰符进行封装。(详见【字段】章节)

main方法

定义格式:

tatic void Main(string[] args)
{
...
}

string[ ] args 指的就是你在命令窗口输入的参数,也就是命令行参数。

函数与方法的关系

方法在某种程度上相当于C语言的函数。但在正式的c#术语中区分函数和方法。在c#术语中,“函数成员”不仅包含方法,也包含类或结构的一些非数据成员,如索引器、运算符、构造函数和析构函数等,甚至还有属性。这些都不是数据成员,字段、常量和事件才是数据成员

2构造函数

  1. 构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;
  2. 一个类可以有多个构造函数(构造函数的重载)。
  3. 构造函数必须存在。如果没有为类提供构造函数,则 C# 将默认创建一个构造函数,该函数会实例化对象并将成员变量设置为默认值。

类的 构造函数 是类的一个特殊的成员函数,是一种特殊的方法,主要用来在创建对象时初始化对象(为新对象的成员变量赋初始值),总与new运算符一起使用对该类进行实例化( 实例化对象就是调用合适的构造函数进行类的实例化)。
构造函数的名称与类的名称完全相同,它没有任何返回类型。 默认的构造函数没有任何参数。带有参数的构造函数叫做参数化构造函数,可以在创建对象的同时给对象赋初始值。

class Chinar
    {
        private int    a = 1;
        private int    b = 1;
        private string c = "Chinar";
        private object d = 666;


        //构造函数用来完成 —— 初始化工作
        public Chinar() //声明构造函数,函数名与类名相同
        {
            //每个类,本身默认有一个。如果我们不写明这个  public Chinar()函数,系统仅调用系统默认的。
            //自定义构造 public Chinar()函数后,系统只会调用自定义的 Chinar()
        }

——————
        //这是一个多参数的构造函数
        public Chinar(int a, int b, string c, object d)
        {
        ...
        }
    }

new 运算符:用于创建对象和调用构造函数(即类的实例化),格式为:

类 实例名 = new   类();
例:Shape sha = new Shape();

3字段

字段又称为“成员变量”,一般用在一个类内部做数据交互使用,通常使用private修饰。
字段的数据类型有:
C# 类的成员——字段、方法、构造函数和属性访问修饰符有:

public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型。

实例:

 class Shape//定义类
   {
      public void setWidth(int w)//定义方法
      {
         width = w;
      }
      protected int width;//定义字段(成员变量)
      protected int height;
   }

4属性

属性是 C# 中的一等公民。
属性属于高级概念,在OOP(面向对象)中,主要使用属性来描述对象的静态特征。属性一般采用public修饰。
属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。
属性的定义格式:

_name(属性名)
public [对应字段类型] 属性名Name
{
get{return _name;}
set{_name=value;}
}

属性和字段的区别

C#属性是字段的扩展
属性是类或对象中的一种智能字段形式。 从对象外部,它们看起来像对象中的字段。 但是,属性可以通过丰富的 C# 功能来实现。
访问属性时,其行为类似于字段。 但与字段不同的是,属性通过访问器实现。