使元素可以从引用中更改

时间:2013-01-01 06:08:47

标签: c# reference

原来如此!我有一个C#数组。

我有一个函数从数组中返回一个元素,因此可以访问该引用的数据。耶!

如果更改该引用然后影响了数组中的原始元素,那将非常非常方便。这是静态变量吗?有办法吗?怎么做?例如:

功能A找到一个项目:

public TutorialPopupBehavior GetBehavior(string behaviorName) {
        foreach(TutorialPopupBehavior beh in _tutorialItems) {
            if(beh._popupName == behaviorName) {
                return beh;
            }
        }
        print ("Could not find behavior of name " + behaviorName);
        return null;
    }

然后将其返回到函数B,然后理想情况下,它将能够更改返回项的属性:

public void SetTutorialItem(bool state, string itemName) {
        TutorialPopupBehavior beh = GetBehavior(itemName);
        if(beh == null) {
            print ("No tutorial item found, so can't set it to " + state);
            return;
        }   
        //idealistic code: beh._isShown = true;

    }

该元素的_isShown属性将在原始_tutorialItems数组中永久更改...您如何完成此任务或设计不同,以避免出现此问题?我问的原因是因为我有许多要搜索的数组,而且我不想通过让同一个类不止一次搜索同一组数组来使我的代码复杂化。

1 个答案:

答案 0 :(得分:1)

 public  void GetBehavior(string behaviorName, ref TutorialPopupBehavior b) {
            foreach(TutorialPopupBehavior beh in _tutorialItems) {
                if(beh._popupName == behaviorName) {
                    b = beh;
                     Return;
                }
            }
            print ("Could not find behavior of name " + behaviorName);
            b = null;
        }

阅读此msdn article