zoukankan      html  css  js  c++  java
  • c#值类型和引用类型

    c#引用类型和值类型内存模型求解
    
    
    
    对于值类型存储 在栈中,引用类型存储在堆中我是理解的
    
    
    class A{}
    class B
    {
    private A a;//A也是存储在堆上的
    public void Test(){}//栈上指向堆上B的指针->B(这个在堆上),然后B中有个指针指向堆中A所在的地址
    }
    情况二:
    struct JGT
    {
    A a;
    //JGT被分配在栈上.同样内部有个指向堆中A所在内存的指针
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class Default3 : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    RefType reft
    =new RefType();
    ValueType value
    =new ValueType();
    reft.Var
    =100;
    value.Var
    =100;
    Response.Write(
    "RefType:var"+reft.Var.ToString()+"</br>");
    Response.Write(
    "ValueType:var"+value.Var.ToString()+"</br>");
    RefType refto
    =reft;
    ValueType valueo
    =value;
    refto.Var
    =10;
    valueo.Var
    =1000;
    //引用类型
    Response.Write("RefType:var" + reft.Var.ToString() + "</br>");//修改之前 输出RefType:var10
    Response.Write("RefType:var" + refto.Var.ToString() + "</br>");//修改之后 输出RefType:var10

    //值类型
    Response.Write("ValueType:var" + value.Var.ToString() + "</br>");//修改之前 输出ValueType:var100
    Response.Write("ValueType:var" + valueo.Var.ToString() + "</br>");//修改之后 输出ValueType:var1000
    }

    public struct ValueType
    {
    public int Var;
    }

    public class RefType
    {
    public int Var;
    }

    }
  • 相关阅读:
    使用Linq 更新数据库时遇到的一些问题及解决办法
    Asp.net 初级面试(转)
    jQuery设计思想
    WinCE BSP的BIB文件介绍
    团队管理经验(转)
    35岁以前成功的9大好习惯
    早起的十个好处,以及如何做到早起
    男人魅力的九个方面
    SQL优化34条(转)
    深入理解Javascript闭包(closure)
  • 原文地址:https://www.cnblogs.com/aiyp1314/p/2100861.html
Copyright © 2011-2022 走看看