| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:关于属性的问题
只看楼主 加入收藏
yuanquan0104
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-7-8
收藏
 问题点数:0 回复次数:9 
关于属性的问题
我想知道下面代码的意义;有什么作用;在什么时候用;我看到程序里写类的时候用到拉;我想知道还在什么地方用!谢谢指教。
using System;
namespace qwe
{
     class Class1
     {
           private int  intVal;
           public int Val
           {
                 get
                 {
                          return intVal;
                 }
                  set
                 {
                          intVal = value;
                 }
           }
     }
}
搜索更多相关主题的帖子: 属性 
2005-07-14 10:05
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
收藏
得分:0 

寻求挑战,追求完美 Oh,my god!
2005-07-14 15:13
yuanquan0104
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-7-8
收藏
得分:0 
我看不了   我没有浏览权限
2005-07-14 16:20
Benjamin
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2005-7-11
收藏
得分:0 
get和set 分别是读和写的属性
也可以只用一个,比如说:只读就可以
public int Val
           {
                 get
                 {
                          return intVal;
                 }
           }

小弟是新手,请各位哥哥姐姐帮忙! 吾将不胜感激……
2005-07-14 16:55
yuanquan0104
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-7-8
收藏
得分:0 
楼上兄弟谢谢你,我知道只读和写,怎么样定义我知道,但是不知道怎么用,什么时候用,写它的作用是什么,能不能告诉我,不胜感激!!
2005-07-15 08:30
cfchhh
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2005-5-8
收藏
得分:0 
public int Val
           {
                 get
                 {
                          return intVal;
                 }
                  set
                 {
                       intVal   = value;
                 }
           }
通过构造函数,可以获得这个变量的属性和外来内容,也可以通过参数传递来获得这个变量的属性和内容
通过这个构造函数,你可以在其他地方继承它,就可以获得这个构造函数获得的属性;
如果你想获得外来内容就可以通过继承这个构造函数来获得
他的作用是get 获得intVal变量的所有属性,set里把外来内容赋给intVal这个变量,然后同过继承就可以获得这个变量的所有属性内容(我也是新学者 也只是模糊知道一点)
------------------
交流是学习的最好途径

[此贴子已经被作者于2005-7-15 9:19:40编辑过]



2005-07-15 09:09
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
收藏
得分:0 
没有权限???晕晕的。。。全贴吧。。。
以下是引用houyunqing在2005-7-3 12:55:11的发言:

A.属性 作用:将类的某些部分隐藏起来,同时还可以限制外部对内部成员的存\取权限 另外,还可以在存\取时进行某些额外的行为,或者是进行一些特殊的处理. 事实上,属性是一种非常灵活的却又不具有参数的方法

实现手段:存取元(get{}set{}),再配合一个储存用的变量(某些情况下也可以不配合这个变量),一般是配合私有变量(private)

如果没有get存取元,而有set存取元,那么就是说,这个属性允许你进行写,却不允许你获得它的值(只写属性) 而如果有get{},没有set{},这个属性就是只允许你获得它的值,却不允许你修改它(只读属性) 如果两个都有,那就是可以修改也可以获取值了(可读写属性)

例子: class a { private string str="3216549879876548";//下面的几个属性都是靠这个私有变量完成存取的 public string Str//可以写也可以读的属性,因为它有get,也有set { get{return str;} //这个属性使用类内的str(一个私有的string成员)进行存储,在取得Str的值时,就返回str的值, //要注意,返回的类型必须与属性的类型相同,return 只能出现在get存取元中 set{str = value;}//value是一个关键字,专门用于set存取元中的, //value的类型取决于属性的类型(永远与属性的类型相同),在这个地方,value就是一个string } public string Stri//只读属性,因为它只有get { get{return str;} } public string St//只写属性,因为它只有set { set{str = value+"opq?";//可以在存取动作时进行一些额外的行为,还可以调用方法等等,非常好用! } } } class main { public static void Main() { a a1 = new a(); Console.WriteLine(a1.Str);//打出了str的值 Console.WriteLine(a1.Stri);//打出了str的值,因为Stri这个属性是允许读的,所以不会出错 a1.Str="sssss";//Str是可以写的属性,所以这句代码也不会出问题 a1.Stri = "akljdfkaf";//Stri没有set存取元,不允许写,这句代码无法编译 Console.WriteLine(a1.St);//St属性只允许写,不允许读,这句代码无法编译 a1.St="asdfasdf";//OK!St属性允许写~ } }

注意: 属性可以是各种各样类型的,随便你定义:修饰符 属性类型 属性名称{这个里面可以包含有存取元,也就是get{}和set{}} get{}里面可以有return,但是set{}里面不能有,同样,value只可存在与set中(value与属性的类型相同) 同一个方法中不可以有同名的属性! 属性可以使用virtual,abstract,override修饰符 属性可以为static

B.索引 作用:具有属性的大多数特点,另外,存取更灵活,数组的"[]"和集合的"[]"都是索引

例子: class b { string[]s=new string[]{"a","b","c","d","e","f","g","h"}; public string this[int index]//注意索引的声明方法: //修饰符 类型 this[这个里面声明存取时所用的参数,参数不限制为一个,参数的类型可以不同] { get { return s[index];//如果index超出s的范围,将会导致异常 } set { s[index]=value;//如果index超出s的范围,将会导致异常 } } } public int this[string index]//这个地方采用string作为索引参数,返回一个int { get { return s.IndexOf(index);//这个索引形同与IndexOf(); } }

class main { public static void Main() { b b1 = new b(); Console.WriteLine(b1[0]);//OK! Console.WriteLine(b1[99]);//抛出异常,因为99这个索引超出了范围 Console.WriteLine(b1["a"]);//输出0 } } 注意: 一个类可以有多个索引,但是这些索引不能有相同的索引参数 还有,属性可以为static,而索引不可以 索引可以有多个参数(至少一个),参数的类型可以不同,索引的参数不可以为out(传出参数)或者ref(传参考参数) 虽然属性和索引都是方法,但是不能声明为void


寻求挑战,追求完美 Oh,my god!
2005-07-15 21:54
yuanquan0104
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-7-8
收藏
得分:0 
谢谢!!!收到了你的知识,非常感激,我先看看,等遇到属性问题在问你,
2005-07-16 14:00
wangybo
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-8-15
收藏
得分:0 
谢谢上楼大哥的指点,这下小弟也真正理解了
2005-08-17 17:57
smiles
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2005-8-8
收藏
得分:0 
绝对支持,猛顶

2005-08-18 09:40
快速回复:关于属性的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022799 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved