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;
    }

    }
  • 相关阅读:
    java学习多线程之创建多线程一
    java学习之线程
    ios开发系统地图知识
    Swift3.0变化分享
    最新友盟6.1.1集成遇到的坑,自定义分享界面实现(跳转控制器做分享)
    IOS开发遇到(null)与<null>轻松处理
    友盟分享实现
    iOS 判断网络连接状态的几种方法
    GCD总结
    iOS视频边下边播--缓存播放数据流
  • 原文地址:https://www.cnblogs.com/aiyp1314/p/2100861.html
Copyright © 2011-2022 走看看