zoukankan      html  css  js  c++  java
  • 第二章 深入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();
    }

    *方法调用

    *值类型和引用类型

    *对象数组作为参数

    *窗体间数据传递

            

  • 相关阅读:
    SQL Server系统表sysobjects介绍
    tofixed方法 四舍五入
    (function($){})(jQuery);
    DOS批处理命令-字符串操作
    IF ERRORLEVEL 和 IF %ERRORLEVEL% 区别
    Gpupdate命令详解
    DOS批处理中%cd%和%~dp0的区别
    SetACL 使用方法详细参数中文解析
    Lazarus 1.6 增加了新的窗体编辑器——Sparta_DockedFormEditor.ipk
    Lazarus 1.44升级到1.6 UTF8处理发生变化了
  • 原文地址:https://www.cnblogs.com/gaoweixiao99/p/4620113.html
Copyright © 2011-2022 走看看