关于C#中属性的问题

libing8384 2008-08-03 05:01:12
本人新学C#,有个关于属性(property)的问题请教各位高手。
看到一本书上说C#编译器会在我们指定的属性名称前加get_和set_来自动生成访问器函数,而且我在使用某些类库的时候确实也用到了这样的属性。但是我自己写得类中为什么没有这样的函数呢,是不是某些编译选项没打开呢?请各位指教!
...全文
140 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProjectDD 2008-08-04
  • 打赏
  • 举报
回复
C#的属性,就不需要额外加,访问函数和,设置函数了.

因为set{}get{}统一封装了这两特型函数,set中还有隐含的value
get中有隐含的return检查.
visir 2008-08-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 libing8384 的回复:]
按照楼上的说法做了,发现这个菜单是用来给private变量添加属性的,跟我提的问题不是一回事。
我的问题是添加了属性之后,怎么才能想有些书上所写的那样,使用get_XXXX()和set_XXXX()
函数范围属性。
[/Quote]
可以这么理解,
public int Prop{} = public int get_Prop(){} + public void set_Prop(int value){}
所以当你加入一个新成员的时候-- 比如:public int get_Prop()---会提示重定义

你在使用属性的时候-- 如obj.Prop = 5; int a = obj.Prop; --会根据属性是左值还是右值来判断用get还是set
libing8384 2008-08-03
  • 打赏
  • 举报
回复
按照楼上的说法做了,发现这个菜单是用来给private变量添加属性的,跟我提的问题不是一回事。
我的问题是添加了属性之后,怎么才能想有些书上所写的那样,使用get_XXXX()和set_XXXX()
函数范围属性。
virusswb 2008-08-03
  • 打赏
  • 举报
回复
重构菜单有一个封装字段

或者在private变量上面右键,重构,封装字段
libing8384 2008-08-03
  • 打赏
  • 举报
回复
可能是我没有解释清楚,我的意思是说,如果我在某个类里定义了一个属性,例如:
class Test
{
private string message;
public string Message
{
get{return message;}
set{message = value;}
}
}
访问属性的时:
Test t = new Test();
t.Message = "test";
除了以上这种形式外,应该还可以这样:
t.get_Message();
使用别的类库的时候看到过这种形式,但是自己不知道怎么定义。
自己试图添加get_Message()函数的时候,被提示这个函数已存在,不能重复定义,但实际上又不能使用get_Message()。
我的问题是这个get_Message()函数是谁定义的,到底能不能使用。
luofuxian 2008-08-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/luofuxian/archive/2008/08/02/2759261.aspx 希望对你与帮助
ashlan 2008-08-03
  • 打赏
  • 举报
回复
在主菜单里选择重构-》封装字段也是可以的。
QQQQAnnie 2008-08-03
  • 打赏
  • 举报
回复
楼上
LQYUNG168 2008-08-03
  • 打赏
  • 举报
回复
属性是要自已定义的,例:

class Class1
{
private int i;

public int I
{
get { return i; }
set { i = value; }
}

只是在VS2005编辑器中可以自动封装字段为属性,在声明的字段i上单击右键,选择封装字段即可.没有set语句就是唯读属性,没有get语句就是只写属性

110,570

社区成员

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

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

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