周星星1832 发表于 16-11-2010 12:42:58

C# property

奇怪的问题:
public class EtDir {

    private String idDir;

    public String idEtDir
    {
      get { return idDir; }
      set { idDir = value; }
    }
}
当我用 EtDir aDir =new EtDir();
aDir.idEtDir = "1"; 的时候没有错误。

当我把class 改成
public class EtDir {


    public String idEtDir
    {
      get { return idEtDir; }
      set { idEtDir = value; }
    }
}
当我用 EtDir aDir =new EtDir();
aDir.idEtDir = "1"; 的时候总是出错, why??? 高手

woodheadz 发表于 16-11-2010 13:11:58

public class EtDir {


    public String idEtDir
    {
      get; set;
    }
}
:lol :lol

周星星1832 发表于 16-11-2010 13:13:19

原帖由 woodheadz 于 16-11-2010 13:11 发表 http://www.freeoz.org/ibbs/images/common/back.gif
public class EtDir {


    public String idEtDir
    {
      get; set;
    }
}
:lol :lol
server 版本低,都不支持这个

周星星1832 发表于 16-11-2010 13:14:53

更奇怪的是,下面的class 工作的好好的
public class Event{

    public String idArticle{
      get { return idArticle; }
      set { idArticle = value; }
    }

    public String created{
      get { return created; }
      set { created = value; }
    }

    public String title{
      get { return title; }
      set { title = value; }
    }

    public String teaser{
      get { return teaser; }
      set { teaser = value; }
    }

    public String body{
      get { return body; }
      set { body = value; }
    }

    public String filename{
      get { return filename; }
      set { filename = value; }
    }
   
      
}

lol 发表于 16-11-2010 14:07:07

难道不会死循环么?

你call set idEtDir, 但是 set idEtDir又调用 set idEtDir....

周星星1832 发表于 16-11-2010 14:14:04

原帖由 lol 于 16-11-2010 14:07 发表 http://www.freeoz.org/ibbs/images/common/back.gif
难道不会死循环么?

你call set idEtDir, 但是 set idEtDir又调用 set idEtDir....
哪来的死循环???

lol 发表于 16-11-2010 14:16:39

原帖由 lufumin1832 于 16-11-2010 14:14 发表 http://www.freeoz.org/ibbs/images/common/back.gif

哪来的死循环???



public class EtDir {
    public String idEtDir
    {
      get { return idEtDir; }
      set { idEtDir = value; }
    }
}

周星星1832 发表于 16-11-2010 15:42:52

原帖由 lol 于 16-11-2010 14:16 发表 http://www.freeoz.org/ibbs/images/common/back.gif




public class EtDir {
    public String idEtDir
    {
      get { return idEtDir; }
      set { idEtDir = value; }
    }
}
这不是死循环,这是一个简化的格式。

pengruijun 发表于 16-11-2010 15:57:05

原帖由 lufumin1832 于 16-11-2010 12:42 发表 http://www.freeoz.org/ibbs/images/common/back.gif
奇怪的问题:
public class EtDir {

    private String idDir;

    public String idEtDir
    {
      get { return idDir; }
      set { idDir = value; }
    }
}
当我用 EtDir aDir =new E ...

啥错误信息?

周星星1832 发表于 16-11-2010 16:03:01

原帖由 pengruijun 于 16-11-2010 15:57 发表 http://www.freeoz.org/ibbs/images/common/back.gif


啥错误信息?
server 直接crash 了:L :L

pengruijun 发表于 16-11-2010 16:15:35

原帖由 lufumin1832 于 16-11-2010 16:03 发表 http://www.freeoz.org/ibbs/images/common/back.gif

server 直接crash 了:L :L
那就是上面有人说的, 死循环了。 stack overflow 了。
你放个breakpoint 在 set 那里, 应该是一直在那里自己call 自己了。

另: 有这种简化写法吗?

周星星1832 发表于 16-11-2010 16:22:28

原帖由 pengruijun 于 16-11-2010 16:15 发表 http://www.freeoz.org/ibbs/images/common/back.gif

那就是上面有人说的, 死循环了。 stack overflow 了。
你放个breakpoint 在 set 那里, 应该是一直在那里自己call 自己了。

另: 有这种简化写法吗?
你问的我有点糊涂了。
我记得有。如果没有那我的event class为什么能工作呢?

周星星1832 发表于 16-11-2010 16:25:40

靠,貌似真没有这种简化写法,我自创的:L :L :L
等我看看我的event的class

lol 发表于 16-11-2010 16:30:58

原帖由 lufumin1832 于 16-11-2010 15:42 发表 http://www.freeoz.org/ibbs/images/common/back.gif

这不是死循环,这是一个简化的格式。

不是这样简化, 你的property不停的call itself.

周星星1832 发表于 16-11-2010 16:31:16

sorry guys!
我的错误,events class从未被调用过。。。。。。。。。。。
我太愚蠢了。

话说回来c#这种封包也太愚蠢了。

周星星1832 发表于 16-11-2010 16:33:10

原帖由 lol 于 16-11-2010 16:30 发表 http://www.freeoz.org/ibbs/images/common/back.gif


不是这样简化, 你的property不停的call itself.
是的啊,
还得非再declair不同名字的property.
C#,我鄙视你

lol 发表于 16-11-2010 16:54:11

原帖由 lufumin1832 于 16-11-2010 16:33 发表 http://www.freeoz.org/ibbs/images/common/back.gif

是的啊,
还得非再declair不同名字的property.
C#,我鄙视你

property 实际上是method, 帮助封装 private field. 所以要不同的名字。

procoder 发表于 16-11-2010 18:56:00

death loop. if you use VS 2008and .net , you still can use Auto Property.

woodheadz 发表于 16-11-2010 20:19:26

原帖由 lufumin1832 于 16-11-2010 16:33 发表 http://freeoz.org/ibbs/images/common/back.gif

是的啊,
还得非再declair不同名字的property.
C#,我鄙视你
我觉得在这点上C#没什么问题。
很多Porperty内部可能是有包含逻辑的,如果提供了类似你前面的那种简化实现,那么程序员怎么样才能访问到那个单纯不带逻辑的数据域呢?
不想多写代码的话,可以用VS自带的重构工具中encapsulate property功能把成员变量封装为属性

[ 本帖最后由 woodheadz 于 16-11-2010 20:25 编辑 ]

周星星1832 发表于 17-11-2010 08:47:24

其实这种简化就很好
public class EtDir {


    public String idEtDir
    {
      get; set;
    }
}

本来我是用这个的,可惜server不支持,我也不知道自己怎么就自创了那个简化的:lol :lol :lol
页: [1]
查看完整版本: C# property