标题:C# STRING[] 处理问题,求解!
只看楼主
randy0725
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-4-28
结帖率:0
已结贴  问题点数:20 回复次数:3 
C# STRING[] 处理问题,求解!
今天听我的学哥做发表的时候,讲述了secure coding,里面有一个例子,是关于Java处理字符串数组的问题。
我用的是C#,代码很简单,但是其中出现问题了。
我先把代码贴出来:
class classobj
    {
        private string[] color;
        public classobj(string[] color)
        {
            this.color = color;
        }
        public void printcolor()
        {
            for (int i = 0; i < color.Length; i++ )
            {
                Console.WriteLine(color[i].ToString());
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string[] color = new string[3];
            color[0] = "red";
            color[1] = "blue";
            color[2] = "yellow";
            classobj obj = new classobj(color);
            obj.printcolor();
            color[0] = "green";
            obj.printcolor();
            Console.ReadLine();
        }
    }
第一次输出的时候,现在的肯定是
red
blue
yellow
但是,我把color的值从新赋过之后,结果就成了
green
blue
yellow
我想问问是为什么,如何去改进呢?我还没有来的及问我的学哥。请赐教!

[ 本帖最后由 randy0725 于 2009-8-25 12:52 编辑 ]
搜索更多相关主题的帖子: STRING 求解 
2009-08-25 12:50
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
得分:10 
public classobj(string[] color)
{
    this.color = color;  -->两个数组的地址指向了同一的地址.
}
换的方法好多.只要两个变量不要指向了同一地址便可
如:
public classobj(string[] color)
{
  this.color=new string[color.length];
  for(int i=0;i<color.length;i++)
    {   
        this.color[i]=color[i];
    }
}


自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-08-25 13:52
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
得分:10 
回复 2楼 baikil
两个数组的地址指向了同一的地址???形参和实参怎么会是同个地址呢

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-08-25 19:41
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
得分:0 
引用类型不管是什么形参与实能public classobj(string[]color)---public classobj(ref string[] color)的效果

[ 本帖最后由 baikil 于 2009-8-26 10:40 编辑 ]

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-08-26 09:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283653-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.157182 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved