| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6352 人关注过本帖
标题:求高手解答c#中属性与方法的具体区别????
只看楼主 加入收藏
lyb151
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2010-2-6
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:16 
求高手解答c#中属性与方法的具体区别????
真不知道属性与方法的本质分别,?
搜索更多相关主题的帖子: 属性 解答 
2010-03-02 20:46
外部三电铃
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:那一年
等 级:贵宾
威 望:57
帖 子:2012
专家分:7306
注 册:2007-12-17
收藏
得分:1 
属性可以理解成对象的变量
方法可以理解成对象的函数

那一年,苍井空还是处女
2010-03-02 21:51
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:15 
楼主肯定是被C#里的属性过程与属性搞混了,属性过程与属性是两个不一样的概念,虽然在.NET里两者都显示为属性,但是两者是不一样的。
属性的严格写法是
public class a
{
    public string a;
    public int b;
}
这个才叫属性,属性是一个类的变量,属性作为变量不承担任何计算过程。
而属性过程则不同
属性过程的写法
public class a
{
   private string a;
   private int b;
   public string a
   {
      get
      {
          return this.a;
      }
      set
      {
          this.a=value;
      }
   }
   public int b
   {
      get
      {
          return this.b;
      }
      set
      {
          this.b=value;
      }
   }
}
属性过程则不同,属性过程可以理解为特殊的方法或函数,这个方法只有一个参数并且只能返回一个值。
属性过程的作用在于,对输入数据的有效性处理
设想一下用户注册这个功能
用户注册有一个用户类
用户类有一个属性用户名
public class user
{
    public string username;
}
而通常限制用户注册用户名不能为空要在用户界面去限制。
user Objus=new user();
if(Objus.username==null)
{
   throw new Exception("用户名不能为空");  
}
这样写的确没错,但是如果你登陆里也要限制用户名不能为空,用户修改资料里也得限制,这时候还得写一遍上面的代码,而这样就会有很多重复的代码。
就算你能复制粘贴,这些代码也是重复的每回你也要复制粘贴才可以。
如果用属性过程
public class user
{
    private string _username;
    public string username
    {
       get
       {
          return this._username;
       }
       set
       {
          if(value==null)
          {
             throw new Exception("用户名不能为空");
          }
          this._username=value;
       }
    }
}
这时你登陆界面只需两行代码就验证了用户名不能为空
user Objus=new user();
Objus.username=this.Textbox1.Text;
就两行就可以,其他地方也是一样,这就是属性过程。
方法就不用说了吧?
方法就是一个类的函数这些知识楼主应该知道吧?
2010-03-02 21:58
chanchanyuan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-2
收藏
得分:0 
属性是 变量, 方法是数。
前者放数据,后者是操作处理代码
2010-03-03 13:24
bing1201
Rank: 2
等 级:论坛游民
帖 子:37
专家分:24
注 册:2009-10-8
收藏
得分:0 
学习了
2010-03-03 16:05
mervyn
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-9
收藏
得分:0 
感觉和其他语言的熟悉和方法差不多啊
一个人的类,他的属性可能有人.胳膊 人.腿
方法可能是让她说话,走路等
2010-03-03 16:24
lyb151
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2010-2-6
收藏
得分:0 
回复 4楼 liangliang11
谢啦,这个
public string Name
        {
            get { return _name; }
            set { _name = value; }
和一般的属性
pubic int nem;
有什么区别?
2010-03-04 18:44
lyb151
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2010-2-6
收藏
得分:0 
谢谢各位楼主,但是为什么总是用
public string Name
        {
            get { return _name; }
            set { _name = value; }
来描述属性呢,有什么具体作用。
2010-03-04 18:45
~栀子花~
Rank: 6Rank: 6
来 自:~无泪之城~
等 级:侠之大者
威 望:3
帖 子:60
专家分:459
注 册:2010-2-12
收藏
得分:0 
受教

我允许你走进我的世界,但不许在我的世界里走来走去
2010-03-04 21:38
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:1 
以下是引用lyb151在2010-3-4 18:45:21的发言:

谢谢各位楼主,但是为什么总是用
public string Name
        {
            get { return _name; }
            set { _name = value; }
来描述属性呢,有什么具体作用。
作用我已经说了,还不明白吗?属性过程的作用在于对输入输出数据进行有效处理。
虽然
方法1
public class user
{
  public string Name
  {
        get { return _name; }
        set { _name = value; }
  }
}
等效于
方法2
public class user
{
  public string Name;
}
不同在于,现在要求Name不为空,并且长度不可以超过6个字符。
方法2你要验证Name不为空你只能在类外面对象创建后验证,而方法1虽然也要创建对象,但是是在类内部就进行了验证。
哪个方便?你可以自己思考一下。
2010-03-04 22:01
快速回复:求高手解答c#中属性与方法的具体区别????
数据加载中...
 
   



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

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