C#程序设计知识点4-修饰符:public/protected/private, static、const、readonly

public / protected / private

类的成员的可访问性

(1表示可访问)

访问控制符同类中相同程序集的子类相同程序集的子类不同程序集的子类不同程序集的非子类
public11111
protected internal1111
protected111
internal11
private1

【注意】

  1. 如果没有修饰符,默认为private。
  2. 构造方法通常用public,如果没有写默认为private。
  3. 子类不能访问基类中的private字段。
  4. 对于基类中的protected,子类不能访问基类的实例的protected字段,但通过实例化子类来访问该字段。

各元素能够使用的访问控制符

语法元素默认的允许使用的
namespacepublic不可修饰
classprivate五种均可
structprivate不可使用protected
interface【重点!易错!】public不可修饰!
enumpublic不可修饰

static

  1. static可用来修饰:字段、方法、属性、事件、操作符或构造函数。
  2. 常数或嵌套的类型隐含为static;
  3. 索引器不能是static的。
  4. 有static的:静态成员;没有static的:实例成员。

static的真正含义:
不属于某个实例的,而是属于整个类的,整个类的所有实例都是共享的。
简而言之,static就是“非实例的”。

static字段

静态字段不保存在某个对象实例的内存空间中,而是保存在一个类的内存区字段的公共存储单元。

什么时候用静态字段?
例如:人的总数,这个性质是属于所有“人”类的,而不是属于一个实例Anna的。而年龄、名字等,是属于一个具体的实例Anna的。

public class Person
{
	int totalNum;
	int age;
	int name;
}

static void Main()
{
	Person.totalNum++;
	var Anna = new Person();
	//...
}

static方法

只属于类的静态方法。

静态方法和实例方法的比较

  1. **内存所有:**实例方法是属于某个对象的方法,在这个对象创建时,对象的方法在内存中拥有自己专用的代码段;静态方法属于整个类,他在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有。
  2. **处理限制:**静态方法不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量。即,static方法只能处理static字段或调用static方法。
  3. **访问限制:**static方法中,不能访问实例变量。在类方法中不能使用this或base。
  4. **调用方式:**调用static方法时,应该使用类名直接访问,不能用某一个具体的对象名。

例如:
Console.WriteLine(); int.Parse();是静态方法。

const

被const的修饰的是常量(constant)。

格式:
修饰符 const 类型 常量名 = 常量表达式

  1. 常量的作用相当于对常量的符号表示,必须在定义时显式地赋值,并且赋以常量表达式,不能用变量赋值。
  2. 除了在定义的地方,不能对常量进行赋值。在程序中保持不变。
  3. 隐含static,只能用类名来访问。但不能显式地用static修饰。
class Constants
{
	public const int a = 1;
	public const int b = a + 1;
}

readonly

特点:

  1. readonly字段可以是各种类型。(const只能是简单类型或字符串)
  2. readonly字段可以用变量或表达式赋值。
  3. readonly不能修饰局部变量(const可以)。
  4. 不隐含static性质。
  5. 不要求定义时初始化。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值