常量、字段、方法、属性和索引器(C#)

常量(Constants)

常量是在编译时已知并在程序的生存期内不发生更改的不可变值。 常量使用 const 修饰符进行声明。 只有 C# 内置类型(System.Object 除外)可以声明为 const。用户定义的类型(包括类、结构和数组)不能为 const。 请使用 readonly 修饰符创建在运行时初始化一次即不可再更改的类、结构或数组。
注:内置类型表如下

这里写图片描述

常量必须在声明时初始化。例如:
C#:

class Calendar1
{
   
    public const int months = 12;
}

在此示例中,常量 months 始终为 12,不可更改,即使是该类自身也不能更改它。 实际上,当编译器遇到 C# 源代码(例如 months)中的常量修饰符时,将直接把文本值替换到它生成的中间语言 (IL) 代码中。 因为在运行时没有与常量关联的变量地址,所以 const 字段不能通过引用传递,并且不能在表达式中作为左值出现。

字段(fields )

“字段”是直接在类或结构中声明的任何类型的变量。 字段是其包含类型的“成员”。

类或结构可以拥有实例字段(instance fields)静态字段( static fields ),或同时拥有两者。 实例字段特定于类型的实例。 如果您拥有类 T 和实例字段 F,可以创建类型 T 的两个对象,并修改每个对象中 F 的值,这不影响另一对象中的该值。 相比之下,静态字段属于类本身,在该类的所有实例中共享。 从实例 A 所做的更改将立刻呈现在实例 B 和 C 上(如果它们访问该字段)。

通常应仅为具有私有或受保护可访问性的变量使用字段。 您的类向客户端代码公开的数据应通过方法、属性和索引器提供。 通过使用这些构造间接访问内部字段,可以针对无效的输入值提供防护。 存储由公共属性公开的数据的私有字段称为“后备存储”或“支持字段”。

  • 在类块中通过指定字段的访问级别,然后指定字段的类型,再指定字段的名称来声明这些字段。 例如:
    C#:
public class CalendarEntry
{
    // private field
    private DateTime date;

    // public field (Generally not recommended.)
    public string day;
    ...
}
  • 若要访问对象中的字段,请在对象名称后面添加一个句点,然后添加该字段的名称,比如 objectname.fieldname。 例如:
    C#:
CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";
  • 声明字段时可以使用赋值运算符为字段指定一个初始值。 例如,若要自动将 “Monday” 赋给 day 字段,需要声明 day,如下例所示:
    C#:
public class CalendarDateWithInitialization
{
    public string day = "Monday";
    //...
}
  • 字段可标记为 public、private、protected、internal 或 protected internal。 这些访问修饰符定义类的使用者访问字段的方式。
    注:访问修饰符

这里写图片描述

  • 可以选择将字段声明为 static。 这使得调用方在任何时候都能使用字段,即使类没有任何实例。

  • 可以将字段声明为 readonly。 只读字段只能在初始化期间或在构造函数中赋值。 static readonly 字段非常类似于常数,只不过 C# 编译器不能在编译时访问静态只读字段的值,而只能在运行时访问。

注:变量与字段的区别与联系

  • 变量代表一个存储位置,每个变量都有一个类型,该类型决定什么值可以存储在变量中,更多关于变量的介绍参考:http://csharp.net-tutorials.com/basics/variables/
  • 字段是声明在类或结构中的变量,它属于类或结构的成员,更多关于字段介绍参考:http://msdn.microsoft.com/zh-cn/library/ms173118(v=vs.80).aspx
    所以变量的概念是大于字段的,字段只是定义在类中或结构中的变量,例如:
    C#:
public cla

你可能感兴趣的:(C#,常量,字段,方法,属性,索引器)