当前位置: 首页 > 编程语言 > C#

C#Array.ResizepassingRefinsteadofValueShare

时间:2023-04-10 12:10:55 C#

C#Array.ResizepassingRefinsteadofValue标题可能有点误导我有一个字符串数组。我想通过参考。我知道这可以简单地完成publicclasstest{string[]content={"abc","abd"};ViewContentvc=newViewContent();publicstaticvoidMain(){vc.InitView(content);}}公共类ViewContent{string[]contentToView;publicvoidInitView(refstring[]contentToShow){contentToView=contentToShow;看法();}publicvoidView(){//对contentToView做任何事情//ExampleArray.Resize(refcontentToView,someInt);如果我要调整数组的大小,Array.Resize()引用中断,并且对调整大小的数组的任何进一步编辑都不会反映在测试类的主数组上。我的问题是:当需要调整大小时,如何防止对主数组的引用中断?另一种方式如何在调整测试类内容的同时调整contentToView的大小?是的,我知道使用列表会更简单,但我正在尝试使用数组。是的,我知道如果我传入测试对象而不是数组,我的问题就会解决。我正在避免使用这种方法,因为我还有其他具有字符串数组的对象。你可能会问,如果我有其他提供类似功能的对象,我是否可以使用继承并接受基类来确保所有内容都可以显示。这是我想避免的。当需要调整大小时,如何防止对主数组的引用中断?你还没有。你只是不使用数组。数组对象不可调整大小,在将contentToShow的值复制到contentToView后,将忽略对contentToShow变量的任何进一步更改,反之亦然。您要问的是,每次测试类中的内容发生变化时,contentToView都会更改其值(这是一个参考),反之亦然。没有办法做到这一点。您可以使用您编写的Wrapper类引入另一个间接级别,基本上是这样的:publicclassWrapper{publicTValue{get;放;如果你然后制作两个Wrapper字段test.content和ViewContent.contentToView,那么如果你改变test.content.Value,你会看到ViewContent.contentToView.Value的变化......但我建议不要这样做.无法调整数组本身的大小。Array.Resize方法创建一个新数组。所以你的旧参考无论如何都不起作用。在代码中使用ref关键字也没有意义。它仅在您在InitView方法中重新分配contentToShow时才有效。如果你想“调整”一个数组的大小(将它重新分配给一个新数组),你将不得不使用一些类(列表或你自己的)。以上就是C#学习教程:C#Array.Resize转Ref代替Value全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: