第二章 深入C#数据类型

数据类型按存储方式可分为两类:

  1. 值类型(源于System.ValueType)
  2. 引用类型(源于System.Object)

结构的定义:

  1. 结构中可以有字段也可以有方法
  2. 定义时,结构中的字段不能被赋初值

结构的使用:

  1. 可以不用new,直接定义结构的对象即可

(前提该属性的类型不是数值类型)

  1. 声明结构的对象后,必须给结构的成员赋初值

*结构是值类型类是引用类型

结构体中没有默认构造函数,但类中有默认构造函数

 

 

装箱和拆箱:

由于装箱和拆箱对系统性能损耗很大,所以在真实的开发中我们尽量避免装箱和拆箱的操作。

 

 

值方式参数传递:

在值方式参数传递时,参数可以是引用类型也可以是值类型

*值传递和引用传递判定依据没有ref

 

  1. 如果方法的参数类型本身就是引用类型,那么对参数值的修改会永久保存

例如:public void TP(SE se)

{

    se.Count++;//真正的修改se对象的Count值

}

  1. 如果方法的参数类型本身是值类型,又没有ref修饰,那么对参数值的修改,不会永久保存()
  2. 如果方法的参数类型本身是值类型,但是有ref修饰,那么对象参数值的修改,也会永久保存。

 

值类型传递 :不带ref的参数传递   SE se

引用类型传递:带ref的参数传递

 

一道练习题:

题目:项目经理评分

实现思路:1.创建MyOffice项目,创建员工类(SE),项目经理类(PM)

  实现代码:

      

class SE
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Assess { get; set; }
public int Popularity { get; set; }
}

     2.创建查看评分窗体(FrmShow),添加定义员工数组,将员工数据绑定到FrmShow窗体的ListView控件上

      实现代码:

          

SE[] se = new SE[3];
private void FrmShow_Load(object sender, EventArgs e)
{
LoadShow();
}
/// <summary>
/// 展示员工信息
/// </summary>
private void LoadShow()
{
se[0] = new SE();
se[0].Id = 111;
se[0].Name = "王小毛";
se[0].Age = 26;
se[1] = new SE();
se[1].Id = 112;
se[1].Name = "周新雨";
se[1].Age = 22;
se[2] = new SE();
se[2].Id = 113;
se[2].Name = "张烨";
se[2].Age = 30;
//绑定到listview控件中
for (int i = 0; i < se.Length; i++)
{
ListViewItem lv = new ListViewItem(se[i].Id.ToString());
lv.SubItems.Add(se[i].Name);
lv.SubItems.Add(se[i].Age.ToString());
lv.SubItems.Add(se[i].Assess);
lv.SubItems.Add(se[i].Popularity.ToString());
this.lvlist.Items.Add(lv);
}
}

     3.双击ListView列表,弹出评分窗体(FrmJudge),进行显示

      实现代码:

        

private void FrmJudge_Load(object sender, EventArgs e)
{
this.txtName.Text = itme.SubItems[1].Text;
this.txtAssess.Text = itme.SubItems[3].Text;
this.txtPopularity.Text = itme.SubItems[4].Text;
}

     4.项目经理填写评分,评价后,弹出FrmJudge窗体关闭,刷新父窗体FrmShow中的员工信息

      实现代码:

/// <summary>
/// 对员工信息修改
/// </summary>
private void ClickUpdate()
{
string assess = this.txtAssess.Text;
string popularity = this.txtPopularity.Text;
itme.SubItems[3].Text = assess;
itme.SubItems[4].Text = popularity;
this.Close();
}

*方法调用

*值类型和引用类型

*对象数组作为参数

*窗体间数据传递

        

 

posted @ 2015-07-04 08:13  by微笑99  阅读(520)  评论(5编辑  收藏  举报