CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#中有没有使方法返回只读对象?

楼主terryfjh()2005-06-02 23:43:36 在 .NET技术 / C# 提问

C++里可以有这样的函数  
  public   const   Type1   Func()  
  {  
                    //.....  
  }  
   
  C#里有没有办法让函数返回的对象只读呢? 问题点数:20、回复次数:23Top

1 楼mba9001(两年不见,csdn变肥了)回复于 2005-06-03 00:32:43 得分 0

c#   也有const,还有ReadOnly关键字Top

2 楼ljc_zy(彷徨)回复于 2005-06-03 07:59:07 得分 0

readonlyTop

3 楼lyb_abiandbel(专注于OO分析与设计)回复于 2005-06-03 08:29:56 得分 0

对啊,用readonly。Top

4 楼terryfjh()回复于 2005-06-04 00:27:38 得分 0

我指的是方法里面new出来的对象,不是类的成员Top

5 楼terryfjh()回复于 2005-06-04 20:22:58 得分 0

upTop

6 楼redmoonmoon(阿卓)回复于 2005-06-04 20:56:06 得分 0

学习Top

7 楼terryfjh()回复于 2005-06-12 21:43:46 得分 0

upTop

8 楼Yamir2004(学习中..说错了别骂人,多指点..)回复于 2005-06-12 21:47:34 得分 0

访问器吧  
  get,set  
  的那个东西Top

9 楼terryfjh()回复于 2005-06-13 22:58:34 得分 0

class   Point  
  {  
  public:  
    int   X;  
    int   Y;  
    const   int   GetX()  
    {  
        X++;  
        return   X;  
      }  
  }  
   
  能把这个c++类翻成c#吗?Top

10 楼Yamir2004(学习中..说错了别骂人,多指点..)回复于 2005-06-14 10:07:19 得分 0

public   int   X  
  {  
        private   int   x;  
        get    
        {  
              x++;  
              return   x;    
        }  
  }  
  Top

11 楼liduke(天下有雪)回复于 2005-06-14 10:12:23 得分 0

public   Object   ObjectA  
  {  
      get  
          {     return   ....}  
  }  
  Top

12 楼terryfjh()回复于 2005-06-19 00:04:05 得分 0

不好意思,我可能没把例子写清楚,其实我的本意是:  
  class   Line;  
   
  class   Point  
  {  
  private:  
    Line   l;  
   
  public:  
    const   Line   GetLine()  
    {      
        return   l;  
      }  
  }  
   
  如果用户调用GetLine(),他将得到一个常量的Line对象,只能读不能改。  
   
  而在C#中如果用get属性方法如果返回一个引用型的对象,有没有办法让用户不能改变这个对象呢?  
  Top

13 楼MyNameEPC(MyName)回复于 2005-06-19 00:26:05 得分 0

返回这个对象的拷贝。Top

14 楼lordych()回复于 2005-06-19 02:16:18 得分 0

没有c++的等价方法,因为c++的const用法本来就很模糊,什么是定值,其引用的对象改变了算不算?  
  所以c#有它自己的语法系统。Top

15 楼terryfjh()回复于 2005-06-20 10:07:44 得分 0

To   lordych()    
  ----什么是定值,其引用的对象改变了算不算?  
   
  如果一个变量声明为const的,那么这个变量不能改变,仅此而已。。。。。  
   
   
   
   
  Top

16 楼jetxia(Thinking->Asking&Studying->Doing)回复于 2005-06-20 10:46:59 得分 0

==如果一个变量声明为const的,那么这个变量不能改变,仅此而已。。。。。  
  在c#中可用ReadOnly声明  
   
  class   Line;  
   
  class   Point  
  {  
  private:  
    Line   l;  
   
  public:  
    const   Line   GetLine()  
    {      
        return   l;  
      }  
  }  
   
  在C#中没有方法实现返回只读对象,这也是C#和C++的区别  
  你在需要调用方法返回只读对象时   可以用声明一个只读对象将调用方法返回只读对象初始化为其值  
  Top

17 楼terryfjh()回复于 2005-06-22 13:16:34 得分 0

to   jetxia(Thinking&Asking&Studying):  
   
  偶比较笨,请您能不能把以下C++代码写成C#  
   
  class   Line;  
   
  class   Point  
  {  
  private:  
    Line   l;  
   
  public:  
    const   Line   GetLine()  
    {      
        return   l;  
      }  
  }  
  Top

18 楼terryfjh()回复于 2005-06-27 22:54:27 得分 0

upTop

19 楼tiaoci(我挑刺,我快乐)回复于 2005-06-28 09:20:32 得分 0

实现一个Readonly的   Type1  
  Top

20 楼tiaoci(我挑刺,我快乐)回复于 2005-06-28 09:26:48 得分 15

public   class   Line  
  {  
          public   virtual   int   X{   get   {...}   set{...}   };  
          public   virtual   int   Y{   get   {...}   set{...}   };  
  }  
   
  然后实现一个ReadOnly的Line  
   
  private   class   ReadOnlyLine   :   Line  
  {  
          public   ReadOnlyLine(Line   line)   {base.x   =x;   base.y=y;}  
          public   override   int   X{   get   {...}   set{   throw   new   ReadOnlyException();   }};  
          public   override   int   Y{   get   {...}   set{   throw   new   ReadOnlyException();   }};  
  }  
   
  在你要返回只读的Line的地方  
   
  public   Line   GetLine()  
  {  
            Line   =   returnLine;  
            return   new   ReadOnlyLine(returnLine);  
  }  
   
  基本上就这样,可能代码中有些笔误,自己领会吧     :)  
   
  Top

21 楼tiaoci(我挑刺,我快乐)回复于 2005-06-28 09:28:28 得分 0

我知道MS在需要Readonly的地方就是这么做的  
   
  所以这是唯一正确的方法,   虽然有些复杂  
   
  Top

22 楼terryfjh()回复于 2005-06-28 23:38:22 得分 0

这么麻烦呀Top

23 楼lordych()回复于 2005-06-28 23:44:59 得分 5

准确的说c#中无法完成此功能,c++这个功能本来就是模糊的。Top

相关问题

  • C++对象有自杀的方法吗?
  • COM+ 对象中如何写一个方法返回Recordset
  • 如何调用WebService返回的复杂对象中的方法
  • 组件返回对象是如何实现的,比如 set obj=组件.方法 返回的值是个对象!
  • 如何在运行时返回对象的方法并绑定其操作?
  • 如何在JAVA方法中返回多个对象,谁能解决给200分。
  • 怎样让COM组件的方法返回ADO记录集对象?
  • 请大家讨论一下用什么方法返回多个对象更好。
  • Date对象有没有方法直接返回日期段或时间段?
  • session.getAttribute()方法的返回对象的强制转换类型问题!!

关键词

  • c#
  • c++
  • 对象
  • readonlyline
  • 变量
  • 方法
  • getline
  • 返回只读
  • line
  • 调用

得分解答快速导航

  • 帖主:terryfjh
  • tiaoci
  • lordych

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo