| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:属性和实例变量的问题
只看楼主 加入收藏
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
属性和实例变量的问题
例如:
程序代码:
public class GradeBook
{        //有无声明实例变量都可以正常调用属性的get访问方法
    private string courseName;

    public string CourseName { get; set; }

    public override string ToString()
    {
        return CourseName;
    }
}

namespace ProgramTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();

            //调用对象test属性的set访问方法
            test.Str = "Programming";

            //间接调用对象test属性的get访问方法
            Console.WriteLine(test);
        }
    }
}


在类里声明一个属性体,而有没有相应的实例变量都可以正常调用属性的set和get访问方法,这样是不是说明CourseName仅仅表示用于操作属性的一个变量,实际上和实例变量courseName之间没有任何数据的交换?

这样是不是就说明实例变量可有可无,只是属性则是必要的?

可不可以这样认为:实例变量只是用来直观地列出所在类所具有的的属性,让阅读代码的人知道这个类有哪些属性,但并不具有实际意义的值(例如,即使在Main里设置CourseName为“Programming”,但实例变量courseName的值并不是“Programming”,而是引用类型的默认值NULL),真正的属性操作是通过属性体方法的访问来完成的?

初学C#,问题不少,主要是不明白实例变量和属性体之间有没有联系,如果有又是怎么联系的,大家帮帮忙,谢谢啦!

[ 本帖最后由 黄昏黄昏 于 2013-9-20 23:49 编辑 ]
2013-09-20 23:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
屬性中有隱藏的字段變量,get和set也是方法,它操縱隱藏的字段。其實屬性的隱藏字段也可以公開寫的,書上有教,你沒看見吧。

授人以渔,不授人以鱼。
2013-09-21 00:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 

你那代碼內部實際上是下面這樣的:

程序代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    public class GradeBook
    {
        private String courseName;
        public String CourseName
        {
            get { return courseName; }
            set { courseName = value; }
        }

        public override String ToString()
        {
            return CourseName;
        }
    }

    class Program
    {
        static void Main(String[] args)
        {
            GradeBook test = new GradeBook();
            test.CourseName = "Programming";
            Console.WriteLine(test);
        }
    }
}

授人以渔,不授人以鱼。
2013-09-21 10:44
快速回复:属性和实例变量的问题
数据加载中...
 
   



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

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