C#字段和属性小结
来源:互联网 发布:linux system函数用法 编辑:程序博客网 时间:2024/04/29 23:23
对于c#的学习多是集中于web方向的那些控件操作,以及一些简单的逻辑,导致很多基础性的知识不是很扎实,今天正好有时间和兴趣,就补了一下这方面的知识。
这部分主要是关于属性,字段以及方法的概念:
为什么有属性?首先是直接把数据字段公开不好,其次是有时候需要对一些用户的输入进行验证,输出有时也需要计算
代码:
using System;
#region //使用属性来读写类中的字段,从而实现对字段的保护
//字段标识符小写,而属性一般以每个单词的第一个字母大写
public class Student
{
public string name;
public int id;
public int age=22;
//set中的判断
public int Id
{
get { return id; }
set {
if (value< 100)
id = value;
else
id = 100;
}
}
//get后的计算
public string Name
{
get { return "Hello "+name; }
set { name = value; }
}
//Age是只读属性
public int Age
{
get { return age; }
}
}
class Test
{
public static void Main()
{
Student stu = new Student();
stu.Name = "beijing";
stu.Id = 123;
//stu.age = 3;正确。属性只读,但是字段可以改
//stu.Age=3;错误。只读属性不可以设
Console.WriteLine("{0}---{1}--{2}",stu.Id,stu.Name,stu.Age);
}
}
#endregion
这里有三个字段name ,id ,age;对应三个属性:Name,Id,Age。Id属性用set对输入进行判断,Name属性get对输出做了修改,Age为只读属性
另外:属性也不同于方法,它没有圆括号,不必指定返回值类型。set{;}get{;}
来源:http://www.enet.com.cn/article/2007/1023/A20071023879379.shtml
二、
类的字段和属性
一般把类或结构中定义的变量和常量叫字段。属性不是字段,本质上是定义修改字段的方法,由于属性和字段的紧密关系,把它们放到一起叙述。
静态字段、实例字段、常量和只读字段
用修饰符static声明的字段为静态字段。不管包含该静态字段的类生成多少个对象或根本无对象,该字段都只有一个实例,静态字段不能被撤销。必须采用如下方法引用静态字段:类名.静态字段名。如果类中定义的字段不使用修饰符static,该字段为实例字段,每创建该类的一个对象,在对象内创建一个该字段实例,创建它的对象被撤销,该字段对象也被撤销,实例字段采用如下方法引用:实例名.实例字段名。用const修饰符声明的字段为常量,常量只能在声明中初始化,以后不能再修改。用readonly修饰符声明的字段为只读字段,只读字段是特殊的实例字段,它只能在字段声明中或构造函数中重新赋值,在其它任何地方都不能改变只读字段的值。例子:
public class Test
{ public const int intMax=int.MaxValue;//常量,必须赋初值
public int x=0;//实例字段
public readonly int y=0;//只读字段
public static int cnt=0;//静态字段
public Test(int x1,int y1)//构造函数
{ //intMax=0;//错误,不能修改常量
x=x1;//在构造函数允许修改实例字段
y=y1;//在构造函数允许修改只读字段
cnt++;//每创建一个对象都调用构造函数,用此语句可以记录对象的个数
}
public void Modify(int x1,int y1)
{ //intMax=0;//错误,不能修改常量
x=x1;
cnt=y1;
//y=10;//不允许修改只读字段
}
}
class Class1
{ static void Main(string[] args)
{ Test T1=new Test(100,200);
T1.x=40;//引用实例字段采用方法:实例名.实例字段名
Test.cnt=0;//引用静态字段采用方法:类名.静态字段名
int z=T1.y;//引用只读字段
z=Test.intMax;//引用常量
}
}
属性
C#语言支持组件编程,组件也是类,组件用属性、方法、事件描述。属性不是字段,但必然和类中的某个或某些字段相联系,属性定义了得到和修改相联系的字段的方法。C#中的属性更充分地体现了对象的封装性:不直接操作类的数据内容,而是通过访问器进行访问,借助于get和set方法对属性的值进行读写。访问属性值的语法形式和访问一个变量基本一样,使访问属性就象访问变量一样方便,符合习惯。
在类的基本概念一节中,定义一个描述个人情况的类Person,其中字段name和age是私有字段,记录姓名和年龄,外部通过公有方法SetName和SetAge修改这两个私有字段。现在用属性来描述姓名和年龄。例子如下:
using System;
public class Person
{ private string P_name="张三"; //P_name是私有字段
private int P_age=12; //P_age是私有字段
public void Display() //类的方法声明,显示姓名和年龄
{ Console.WriteLine("姓名:{0},年龄:{1}",P_name,P_age);
}
public string Name //定义属性Name
{ get
{ return P_name;}
set
{ P_name=value;}
}
public int Age //定义属性Age
{ get
{ return P_age;}
set
{ P_age=value;}
}
}
public class Test
{ public static void Main()
{ Person OnePerson= new Person();
OnePerson.Name="田七";//value="田七",通过set方法修改变量P_Name
string s=OnePerson.Name;//通过get方法得到变量P_Name值
OnePerson.Age=20;//通过定义属性,既保证了姓名和年龄按指定方法修改
int x=OnePerson.Age;//语法形式和修改、得到一个变量基本一致,符合习惯
OnePerson.Display();
}
}
在属性的访问声明中,只有set访问器表明属性的值只能进行设置而不能读出,只有get访问器表明属性的值是只读的不能改写,同时具有set访问器和get访问器表明属性的值的读写都是允许的。
虽然属性和字段的使用方法类似,但由于属性本质上是方法,因此不能把属性当做变量,一些使用变量的地方并不能使用属性,例如不能把属性作为函数的引用型参数或输出参数。
- C#字段和属性小结
- c# 字段和属性
- C#属性和字段
- C# 属性和字段
- c# 字段和属性
- C#属性和字段
- C# 字段和属性
- c#中的属性和字段
- C#中属性和字段的区别
- C#字段和属性的区别
- C#中字段和属性的区别
- c# 字段,属性和方法总结
- C#属性和字段的认识
- C#中属性和字段的比较
- C#中字段和属性的区别
- C#中属性和字段的区别
- C#中属性和字段的区别
- C#中字段和属性的区别
- wince NandFlash分区实现 MBR创建过程
- df
- C# 优化基于插件的开发框架实现Ribbon界面与功能的分离附DEMO
- 解决Android 工程出现 unable to get system library for the project 异常
- 集群和负载均衡的概念
- C#字段和属性小结
- 算法诊断,分析与优化等
- Servlet
- 嵌入式WEB服务器用户和密码源程序
- MyEclipse xFire webService学习笔记
- vijos-1097:合并果实
- shape圆角内容的探索
- 关于java的session共享
- 操作系统大作业笔记