我是C++客串。net的新手我看到C#程序员是否喜欢这样写类的一个属性啊?
class a
{
private int name;
public int Name
{
get{ return name;}
set{ name = value;}
}
}为何不愿意这样呢?
class a
{
public int Name
{
get; set;
}
}
下面的写法有神马坏处么?
class a
{
private int name;
public int Name
{
get{ return name;}
set{ name = value;}
}
}为何不愿意这样呢?
class a
{
public int Name
{
get; set;
}
}
下面的写法有神马坏处么?
3.0前不支持
private int name;
public int Name
{
get{ return name;}
set
{
if(value!="allenhiman" )
{
name="allenhiWoman";
}
else
{
name=value;
}
}
}
直接按右键产生属性
就不习惯用自动属性了
第二种写法只能公有,get和set成对出现,不能有任何较验逻辑.3.0以后支持
{
public int Name
{
get; set;
}
}
这样的确简单,但只读属性建议采用第一种需不是如下代码,除非这个对象不会用到反射填充,否则会出错,
因为反射时通常判断是否是可写属性,而以下代码则会判断出是可以代码.
public int Name
{
get; private set;
}
public int Name;就完事了?
{
private string name;
private string firstName;
private string lastName; public string Name
{
get{ return name;}
set{
name = value;
firstName = value.split(' ')[0];
lastName= value.split(' ')[1]; }
} public string LastName
{
get{ return lastName;}
} public string FirstName
{
get{ return firstName;}
} }
这种情况经常见的 比如改变窗体面板的颜色 只需要设定属性值即可 o.BackColor = Color.Gary;
BackColor 属性的set中就有破坏原有背景 强制重绘操作
写法3.0才支持,写上面的方式可能是希望受更多ide支持或者希望直接操作私有变量。
int name;string 已经被int代替了吗?好先进啊,好久没来我out了
只能公有不对吧,可以private get/set...
get;set; 前是可以加访问修饰符的,并不一定就public
不是怀旧,而是vs有个快捷键ctrl+R+E
自动将字段提取为属性。自动提取的是按第一种写法写的
这个的效果是不一样的。
比如public int A;
未来你要在给A赋值的时候进行一些特定操作的时候
你就得改成
public int A
{
get;
set{//Do Sth.;}
}这个时候对外公开的内容已经由Field变为Property了,使用了这个类所在的DLL的库都必须要重新编译才能正常工作。如果有反射之类的代码依赖于此,则会因为这个修改而不能正常工作,必须改代码。所以,不推荐将成员公开,而是使用属性的方式访问更加安全也更具扩展性。
public ref class C {
public:
// property data member
property String ^ Simple_Property;
};
而且那么写,可以将数据处理写在get,set里面。
楼主的写法简介,但是要扩展,又得改。