C# 数组作为参数传递出现的问题解决


本文摘自PHP中文网,作者黄舟,侵删。

原则:尽可能控制对数据的修改,如果可以预测某个数据不会或不应该被改变,就要对其控制,而不要期望使用这个数据的调用者不会改变其值。

如果参数在使用过程中被意外修改,将会带来不可预知的结果,而且这种错误很难被检查到,所以我们在设计方法参数的时候,要充分考虑传递引用类型参数或者引用方式传递引用类型参数可能带来的后果。

如果一个数据在传递过程中不能被改变,就要在构建这个对象的时候就使其值(字段或属性)不被改变。

一、对于简单的参数的控制

1、值类型参数传递

这种情况因为传递的是参数的副本,不影响原始值,不需要控制。

2、引用类型参数传递

a、由值类型组成的数据结构

需要将字段设置为只读,属性只有get。赋值只能通过构造方法进行。

b、包含引用类型字段的数据结构

这种情况是递归的,需要保证字段为readonly,属性为get的同时,引用类型字段所使用类型也满足该要求。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public class SuperClass

{    private readonly int  _no;    private readonly SubClass _tag;

    public int NO

   {         get{ return _no;}

   }   

    public SubClass Tag

    {         get{ retirn _tag;}

     }     

      public SuperClass(int no,SubClass tag)

      {

            _no=no;

            _tag=tag;  

       }

}

  

public class SubClass

{     private readonly int _field;    

     public int Field

     {          get{ return _field;}

     }

     public SubClass(int field)

    {

          _field=field;

     }

}

二、对于复杂引用类型参数传递的控制

阅读剩余部分

相关阅读 >>

c# md5hash的用法及实例

c#中实现复制与删除文件的方法

c#简单工厂模式是什么?

c#和.net是一个东西吗?c#与.net的区别与联系

c#中的抽象类与接口的详解

详解.net 同步与异步 之 mutex

c#操作styline二次开发实现画线功能

c#中关于扩展方法的实例分析

关于.net mvc中如何使用forms验证的具体介绍

unity c# getsavefilename()的实例详解

更多相关阅读请进入《csharp》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...