set() 是怎么赋值的?
大家好,我刚接触.net 我点迷惑,请大家帮忙指导一下。
页面里有两个文本Text1Box,Text2Box
public string Uname
{
set
{
this.Text1Box.Text=value;
}
get
{
return this.Text1Box.Text
}
}
public string Upwd
{
set
{
this.Text2Box.Text=value;
}
get
{
return this.Text2Box.Text;
}
}
我在Text1Box里输入12345 在Text2Box 里
输入67890 为什么它能得到this.Text1Box.Text= '12345 '
而不是this.Text1Box.Text= '67890 '呢。那个值是怎么传的
对value怎么理解呀,set()是怎样赋值的呢?
[解决办法]
隐含参数value
[解决办法]
set 跟 get 啊。。
public property aaa() as integer
get
return _aaa
end get
set (byval bbb as integer)
_aaa=bbb
end set
end property
[解决办法]
上下文关键字用于提供代码中的特定含义,但它不是 C# 中的保留字。
get、set、value
get 在属性或索引器中定义“访问器”方法,以检索该属性或该索引器元素的值。
set 义属性或索引器中的“访问器”方法,用于设置属性或索引器元素的值。
value 隐式参数,用于设置访问器以及添加或移除事件处理程序。
// 简单示例
class Employee
{
private string _name;
public string Name
{
get { return this._name; }
set { this._name = value; }
}
}
注意:
get、set“访问器”,在默认情况下具有相同的访问级别。但是有时鉴于对读写的考虑,通常可以限制set的访问级别。对属性或索引器使用访问修饰符受以下条件的制约:
不能对接口或显式接口成员实现使用访问器修饰符。
仅当属性或索引器同时具有 set 和 get 访问器时,才能使用访问器修饰符。这种情况下,只允许对其中一个访问器使用修饰符。
如果属性或索引器具有 override 修饰符,则访问器修饰符必须与重写的访问器的访问器(如果有的话)匹配。
访问器的可访问性级别必须比属性或索引器本身的可访问性级别具有更严格的限制。
--------------------------------------------
出处:http://www.cnblogs.com/hunts/archive/2007/01/18/get_partial_where_yield.html
[解决办法]
隐含参数 value,在属性和索引器使用
[解决办法]
Value就是属性的值,当你给一个属性值的时候,这个值就是Value
[解决办法]
属性 你可以把它看做是一个特别的函数 它有一个参数(类型 value)
这个函数的作用就是给 类的 私有变量赋值(如果你用过c++这样会更明白)
这个东西没什么什么密的 就是.net环境为了控制private变量 而特别出现的语法带起自定义函数而已
[解决办法]
set
{
this.Text1Box.Text=value;
}
相当于
public void SetUname(string value)
{
this.Text1Box.Text=value;
}
[解决办法]
get set是用来扩展域的,也就是C里的变量,只是用起来更加灵活而己。看以下代码:
using System;
public class cls
{
private int book;//定义一个域(也可以叫变量,只是面向对像里都这么叫,使用起来也更加方便)
public int Book
{
get
{
Console.WriteLine( "dsf ");
return book;
}
set
{
Console.WriteLine( "aaa ");
book=value;
}
}
public static void Main()
{
cls obj = new cls();
obj.Book = 120; //注意这一句
Console.WriteLine(obj.Book);
}
}
运行结果为:
aaa
dsf
120
也就是先把120赋值给value(相当一个存储空间),然后再用get{}返回给Book,实际上也就是一次改变变量值的过程。
那你也许会问为什么要这么复杂呢?因为这是用了嵌套,所以可以更加方便的写入其它语句,在以后你就应该学到了。
如果没有:
obj.Book = 120;
请想一想会是什么结果呢?
只是一个取值过程:get{}而没有执行set{}
结果为:
dsf
0