帮忙解释一下C#隐式参数value的传值机制是怎么样的?先谢了。
问题是在我创建Web用户控件的时候产生这样的疑问的.
Private string strLoginid
{
set{
loginid.text = value;//只写属性
}
get{
return loginid.text;//只读属性
}
}
value?怎么样的东西,开始以为是自定义的参数,后来才知道是个隐式参数.
如果这里自己定义一个参数来代替它,该怎么做呢.请不吝赐教.
------解决方案--------------------Private string strLoginid (string my_value)
{
set{
loginid.text = value;//只写属性
}
get{
return loginid.text;//只读属性
}
}
这样??
------解决方案--------------------Private string strLoginid
{
set{
loginid.text = value;//只写属性
}
get{
return loginid.text;//只读属性
}
}
等同于
private void SetstrLoginid(string value)
{
loginid.text = value;
}
private string GetstrLoginid()
{
return loginid.text;
}
public property string strLoginid read GetstrLoginid write SetstrLoginid;
这个是类似以前Delphi的写法,为了简单就变现在那样了。
知道是个什么意思就行了,说白了就是最后一句靠编译器实现,意思是声明一个字符串属性strLoginid,取值的时候用GetstrLoginid方法,赋值的时候用SetstrLoginid方法。
------解决方案--------------------value 在C# 里面是一个 准关键字了!
你为什么要修改 呢?
------解决方案--------------------没有必要的吧,实在是想那样的话,示意如下
object myValue;
Private string strLoginid
{
set{
getMyValue();//这里先将自己定义的myValue获取到值
loginid.text = myValue;//只写属性
}
get{
return loginid.text;//只读属性
}
}
------解决方案--------------------public string strLoginid
{
set{
loginid.text = value;//只写属性
}
get{
return loginid.text;//只读属性
}
}
在编译成IL以后会变成两个方法,分别是
string get_strLoginid ()
和
void set_strLoginid (string value)
不存在属性了。
在这里,value的名字是不能改的。