在C++的世界中:
引用就用&
常量修饰就用const 
所以我很喜欢这个样写
class CMyClass{.....};
void Test(const CMyClass & obj);//这Test不允许对obj做任何修改,但又用到引用的高性能
但C#里好像不可以这样class CMyClass{.....}
void Test(const ref CMyClass obj){}//出错了只能
void Test(ref CMyClass obj);或void Test(const CMyClass obj);

解决方案 »

  1.   

    不好意思CMyClass应定义成struct
      

  2.   

    void Test(ref CMyClass obj);  ->   void Test(CMyClass& obj);void Test(CMyClass obj);      -> if(CMyClass is struct)    void Test(CMyClass obj);else if(CMyClass is class)    void Test(const CMyClass& obj);
    const   ->    #define
    readonly    ->     const
      

  3.   

    c++中有const 方法, c#没有, 所以没办法保证这个参数不会被修改
    建议把stuct换成class
      

  4.   


    问题是这样,我传入的类型是DateTime,它其身就是struct,没法改成class
      

  5.   

    C#语言不会这么弱智吧?同时const 和ref 有这么困难?
      

  6.   

    const只能针对值类型,对于引用类型只能用readonly。
    如果需要传递出去一个值,而不希望被改变
    值类型,直接参数传递就是const
      

  7.   

    算了吧,我稍查了一下,好像这个问题没有结果,不纠结了,不玩严谨了,凑和用吧。可能微软说带了这个const会把语言搞复杂的。
      

  8.   

    不是复杂。
    不同的开发语言,有细节不同的,不要套用c++的方式来这里用。
    c#中,实现你的方法大多是调用Clone制作一个副本,然后传递副本的引用。当然不可能像传递const &那么效率和逻辑双重兼顾。