private static string partstr;
public string Getpartstr
{
get
{
return partstr;
}
set
{
partstr = value;
}
}
我在一个类中这样写的,得到的partstr变量的值不会因用户不同而不同,都一样,想当于应用程序级的变量。
我理解的是相当于application变量,不知道我的理解对不对。请各位指点。谢谢!
后来我在页面中定义了个public变量,问题解决了。
我现在对变量范围,弄不清楚,有谁能帮我列出来吗?还有get,set 到底怎么用?
public string Getpartstr
{
get
{
return partstr;
}
set
{
partstr = value;
}
}
我在一个类中这样写的,得到的partstr变量的值不会因用户不同而不同,都一样,想当于应用程序级的变量。
我理解的是相当于application变量,不知道我的理解对不对。请各位指点。谢谢!
后来我在页面中定义了个public变量,问题解决了。
我现在对变量范围,弄不清楚,有谁能帮我列出来吗?还有get,set 到底怎么用?
的static去掉試試
就像 TextBox.Text 是可读可写的
{
int i = class1.Getpartstr;
Response.Write(i); //输出10
class1.Getpartstr = 2;
Response.Write(class1.Getpartstr); //输出2
}
class class1
{
private static int partstr = 10;
public static int Getpartstr
{
get { return partstr; }
set { partstr = value; }
}
}
另外:
快速学习C#-第二天:类的静态特征与静态属性
http://hi.baidu.com/xinsikao/blog/item/fd452c872646892ec65cc3b6.html
.NET中GET与SET的用法
http://blog.csdn.net/jakeyjia/archive/2006/04/13/661954.aspx
public static string Getpartstr
get,set的用法 主要是可以在get,set时方便做其他一些工作.
只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。
只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。
同时带有 get 和 set 访问器的属性为读写属性。
get 和 set 访问器都必须在属性体的内部声明。
public static string Getpartstr
属性有两个方法get和set。get 访问器返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用:set访问器没有显示设置参数,但它有一个隐式参数,用关键字value表示,它的作用是调用属性时可以给内部的字段或赋值。
我理解的是相当于application变量,不知道我的理解对不对。请各位指点。谢谢!
=======
在ASP.NET中,这是对的
后来我在页面中定义了个public变量,问题解决了。
我现在对变量范围,弄不清楚,有谁能帮我列出来吗?还有get,set 到底怎么用?
=======
get/set可不是你上面的用法,有谁会用你这样的用法?getter/setter 其实是方法,包装 字段 field 的访问
因为是方法,所以能比直接访问 field 干更多的事情,比如检查
private int _divisor;
public int Divisor {
get {
if(_divisor==0){
thrown new InvalidOperationException("Divisor is not initialized.");
}
return _divisor;
}
set {
if(_value==0){
thrown new ArgumentOutOfRangeException("Divisor can not be zero.");
}
_divisor = value;
}
}
1. 嗯,得到的partstr变量的值不会因用户不同而不同是因为你把它定义为static,static类型的变量/方法是和类同一生命周期的,AppDomain加载的时候就加载了,所以和你开多少个实例是没有关系的。
2. 至于变量的范围吗,那么就是局部变量只在Block内生存,类实例变量只在这个类的实例中生存,而类静态变量是和类同一生命周期
3. get,set非常简单,例如
private int carID;
public int CarID
{
get
{return this.carID;}
set
{this.carID = calue;}
} 其实属性编译成中间代码之后就是一个变量加两个方法:对于上面的来说就是
public int CarID; //一个变量
public int CarID_Get() //get方法
{
return this.carID;
}
public void CarID_Set() //set方法
{
this.carID = value;
}
楼主可以自己打开ildasm.exe来查看IL
当我们在一个页面的代码中写属性的时候 要想在其他的页面中使用这个属性(必须是静态的)
只有这样我们才能在其他的页面中 使用这个属性
我觉得区别应该不大
只是application 不需要在需要使用application变量的页面上添加引用
而后者需要这样做
不知道我的理解对不
不过都能实现