😄😊😆😃😄😊😆😃
在写代码的时候,作为新手的我经常会被字段、属性、变量、常量这写概念搞混乱,其实仔细琢磨一下,也没啥难得。
区分字段和属性
先来通过一段代码直观感受一下吧
class A
{
int i;
public int I
{
get{....}
set{....}
}
}
A是我们定义的一个类。我们还在类中定义了一个i和I。
这里面的i就是字段,I就是属性。可以直接的看出来,字段用来储存数据,属性的目的是便于一些私有字段的访问。属性则是对字段的封装,有自己的名称,并且包含get 访问器和set 访问器。提供了安全和灵活的数据访问封装。
到这里我们就能大概了解字段和属性的区别了吧。
区分变量和常量
最简单的理解,一个是可变的,一个是不可变的。
细究一下,变量和常量都是用来存储特定类型的数据。类型决定了内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。
变量
变量可以存储值类型,也可以存储引用类型。
值类型变量:值类型变量在堆栈中进行分配,因此效率很高,使用值类型主要目的是为了提高性能。主要包括整数类型,浮点类型和布尔类型。
引用类型变量:存储的是其数据值得引用,引用类型变量可以引用同一对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一对象。
总结一下就是,值类型存储在内存的栈中,而引用类型在内存的堆中存在对值得引用地址。
常量
常量就是指在程序编译时已经存在且在程序生命周期内不会发生改变的值,用const定义一个常量。当然我之前也总结过readonly和const的区别,感兴趣的可以看一下。
注意:C# 中的两种表达式:
1. lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。
2. rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。
变量是 lvalue 的,所以可以出现在赋值语句的左边。
数值是 rvalue 的,因此不能被赋值,不能出现在赋值语句的左边。
int a=10 //10是数值,只能出现在右边,而a是变量,既可以在左边也可以在右边
int b=a //此时变量a就在右边
//下面这种情况不允许
10 = 20 //此时数值出现在了左边,这就会出现错误
变量与字段
变量代表一个存储位置,每个变量都有一个类型,每种类型决定了分配内存的大小,也决定什么值可以存储在变量中。字段是声明在类或结构体中的变量,它是类或结构体的成员。也就是说定义在函数内部的变量就不再属于字段。
总结起来,字段概念是变量概念的子集。字段是隶属于类的变量。
不知道我这样表达能不能理解。
😤😤😤😤😤😤😤😤