C#利用类型引用改变private类型变量的值

今天研究As3中发现可以利用引用改变private关键字声明的变理,用C#试验了一下,发现也可以!拿出来跟大家分享一下!

先看看代码:

 

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;

namespace  file1
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            List
<string> arr = new List<string>();
            arr.Add(
"a");
            SampleFoo foo 
= new SampleFoo(arr);
            Console.WriteLine(foo.pSample.getList());
            arr.Add(
"b");
            Console.WriteLine(foo.pSample.getList());

        }

    }

}


// 试例类
public   class  SampleFoo
{
    
private List<string> array;
    
public PrivateSample pSample;
    
public SampleFoo(List<string> a1)
    
{
        array 
= a1;
        pSample 
= new PrivateSample(array);
    }

}


// 被测试的类
public   class  PrivateSample
{
    
private List<string> barr;
    
public PrivateSample(List<string> ba)
    
{
        barr 
= ba;
    }

    
public string getList()
    
{
        StringBuilder sb 
=new StringBuilder();
        
foreach (string s in barr)
        
{
            sb.Append(s
+",");
        }

        
return sb.ToString();
    }

}

 上例中我们可以看到,声明SampleFoo类的一个实例时,构造函数代入了一个数组变理,并将其赋值给PrivateSample类型的变量pSample,并将数组array以构造传递给pSample,这时大家要注意一下,这时

我们并不是将值传递,而是将引用传递,此时不论是foo,还是foo的私有变量pSample,还是pSample

的私有变量barr都是指向的同一个引用,及同一个内存地址。

这时我们可以看到,当将arr数组添加新的元素时,也同时改变了pSample的私有变量barr的值,这也可以

充分的看出,对对象的操作实际上是对引用的操作,这一点一定要注意!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值