深入C#数据类型 第二章(课后简答题)

C#中值类型和引用类型的区别  
    1. 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的  地址。 
    2. 值类型存取速度快,引用类型存取速度慢。 
    3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用  
    4. 值类型继承自System.ValueType,引用类型继承自System.Object  
    5. 栈的内存分配是自动释放;而堆在.NET中会有GC来释放   
    6. 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。

 

结构与类的不同
  1.结构的定义
  1 [修饰符] struct [结构名] [ : 接口名]
  2 {
  3 //结构成员
  4 }
  2.结构的构造函数
  1 public struct Test
  2 {
  3 public Test()
  4 {
  5 //此方法编译不会通过,提示错误消息“结构不能包含显示的无参数构造函数”
  6 }
  7 }
  3.结构的成员变量赋值
  1 struct Test
  2 {
  3 static int x = 1;
  4 static int y = x + 5;
  5 //以下两句编译错误,在结构中可以给结构的静态变量赋初值,但不允许给结构的一个实例变量赋初值
  6 int m = 2;
  7 int n = m + 2;
  8 }
  4.创建对象的方法
  使用new运算符来创建结构对象
  直接用结构类型的变量来创建结构对象
  5.继承
  不允许结构从另外一个结构或类继承

 

 

总结
  1.结构是一种值数据类型,而类是一种引用类型
  2.在结构中不允许定义无参数的构造函数(编译不会通过)
  3.在结构中可以给结构的静态变量赋初值,但不能给结构的一个实例变量赋初值
  4.创建结构对象可以不使用new关键字,直接用结构类型的变量来创建
  5.不允许继承(可以将结构看成是密封的类)

 

上机练习三:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;a

namespace Day02
{
    public partial class pingfen : Form
    {
        public pingfen()
        {
            InitializeComponent();
        }


        SE[]  pass=new SE[3];

        public void Qshut() {

            pass[0] = new SE();
            pass[0].Sid = 1;
            pass[0].Sname = "小轩";
            pass[0].Sage = 12;


            pass[1] = new SE();
            pass[1].Sid = 2;
            pass[1].Sname = "小熊";
            pass[1].Sage = 16;



            pass[2] = new SE();
            pass[2].Sid = 3;
            pass[2].Sname = "小小";
            pass[2].Sage = 15;
        }


        public void  shout() { 

        foreach(SE item in pass){

            ListViewItem lv = new ListViewItem(item.Sid.ToString());

            lv.SubItems.Add(item.Sname);

            lv.SubItems.Add(item.Sage.ToString());

            lv.SubItems.Add("未评价");

            lv.SubItems.Add("0");

            listView1.Items.Add(lv);
        
           }             
        }

        private void pingfen_Load(object sender, EventArgs e)
        {
            Qshut();
            shout();

        }

        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {

            FromScore fro = new FromScore();
            fro.data=listView1.SelectedItems[0];
            fro.Show();
        }


    }
}


 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Day02
{
    public partial class FromScore : Form
    {
        public FromScore()
        {
            InitializeComponent();
        }


        public ListViewItem data;
        private void FromScore_Load(object sender, EventArgs e)
        {
            textname.Text = data.SubItems[1].Text;

        }

        private void bpingfen_Click(object sender, EventArgs e)
        {
            data.SubItems[3].Text=textpingjia.Text;
            data.SubItems[4].Text = textScore.Text;


        }
    }
}


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day02
{
    class SE
    {
        public int Sid {get;set; }
        public string Sname { get; set; }
        public int Sage { get; set; }
        public string pingjia { get; set; }
        public int Score { get; set; }
    }
}

 

简答题四:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace shapping
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入购买商品的原价:");
            int yuan = int.Parse(Console.ReadLine());
            Program dd=new Program();
            dd.se(ref yuan);
             Console.WriteLine("实际付款{0}",yuan);
            Console.ReadLine();
        }

        public void se(ref int yuan) { 
       
        int i = yuan / 100;
            for (int j = 0; j < i; j++) {
                yuan -= 50;
            }
        
        }
    }
}


 

简答题五:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Score
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] score1 = new int[3];
            score1[0] = 65;
            score1[1] = 70;
            score1[2] = 75;
            Console.Write("原分数:");
            for (int i = 0; i < score1.Length; i++)
            {
                Console.Write(score1[i] + " ");
            }
            Program p = new Program();
            p.score(ref score1);
            int[] score2 = score1;
            Console.WriteLine();
            Console.Write("提分后:");
            for (int i = 0; i < score2.Length; i++)
            {

                Console.Write(score2[i] + " ");
            }
            Console.ReadLine();
        }
        public void score(ref int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                a[i] += 5;
            }
        }
    }
}



 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值