哪为前辈给解释一下get访问器?

Shalves 2010-06-28 06:23:11

class Program
{
private static int x;

public static int X
{
get { return x++; }
}

static void Main(string[] args)
{
PlusX(X);
}

public static void PlusX(int value)
{
Console.WriteLine("Value is: {0}", value);
Console.ReadKey();
}
}


运行结果:Value is: 0

为什么呢?我觉得应该是1啊!跟x有没有初始化无关吧,x是几就显示几。
...全文
234 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shalves 2010-06-28
  • 打赏
  • 举报
回复
是啊,多谢各位。

还有一个问题,我在设置断点调试的时候,鼠标移到X上,也会显示已经+1的结果;这是为何,难道get跟DataReader一样也是顺向流的读取方式?
qsq3 2010-06-28
  • 打赏
  • 举报
回复
x++先取值,再自加正解
兔子-顾问 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
x++先取值,再自加
只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。
get 访问器都必须在属性体的内部声明。
[/Quote]

+1


class thePlus
{
private int x;
public int X
{
get { return x++; }
}
}

//效果相当于

class thePlus
{
private int x;
public int X
{
get
{
int t = x;
x++;
return t;
}
}
}
lsq667 2010-06-28
  • 打赏
  • 举报
回复
楼主变成, get { return ++x; }
lsq667 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 apollo_ts 的回复:]
。。。。

变量++,是将操作滞后到下一次访问。不是原子操作。
[/Quote]
先进行赋值,后++
wuyq11 2010-06-28
  • 打赏
  • 举报
回复
x++先取值,再自加
只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。
get 访问器都必须在属性体的内部声明。
老Key 2010-06-28
  • 打赏
  • 举报
回复
这个和get访问器没关系。,你将 public static int X中的
static 去掉,,应该就是1了。。。
APOLLO_TS 2010-06-28
  • 打赏
  • 举报
回复
。。。。

变量++,是将操作滞后到下一次访问。不是原子操作。
Shalves 2010-06-28
  • 打赏
  • 举报
回复
我还换了这种写法,结果也是一样。谁指点指点啊,到底该怎样认识get访问器呢。

class Program
{
static void Main(string[] args)
{
thePlus tp = new thePlus();
PlusX(tp.X);
}

public static void PlusX(int value)
{
Console.WriteLine("Value is: {0}", value);
Console.ReadKey();
}
}

class thePlus
{
private int x;

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

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧