在早期学习c#的过程中,经常遇到这样的语句:
public string StudentName
{
           get{return stuName;}
           set{stuName=value;}
}
       当时也不是很明白为什么要这样?学深了c#后,又没法对其做一个总结。今天看了《Visual c#.net程序设计教程》这本书,总结得不错,做下笔记:
       在 许多面向对象程序设计语言中,属性(property)是指对象的特征和状态,具体地说就是指对象的数据成员。程序员可以指定数据成员能否被外界直接访 问,如果数据成员被指定为public的,外界就可以用“对象名.公有数据成员名”访问该成员。c#是完全面向对象的语言,c#倡导一种新途径,对数据成 员能够更好地封装和保护,同时又向外界提供更有效的访问形式。c#中用来达到这个目标的就是“属性”,而那些数据成员,在c#中称为“字段”或“域”。
属性的定义和使用
属性由两个部分组成:属性头和存储器。存储器分为get访问器和set访问器。声明属性的一般形式为:
修饰符  类型  属性名
{
     get   //get存取程序
     {...}
     set   //set存取程序
     {...}
}
       属性的修饰符可以是任何访问控制符,还可以被定义为静态。get和set是一种特定的方法,get用来从对象中读取数据,而set用来向字段写入数据,将外界的数据写入字段时,c#使用value表示输入的数据,value可以说是一个准关键字,例如:
set{aField=value;}
以下是一个简单的例子,演示了属性的基本形式和用法:
using System;
using System.Collections.Generic;
using System.Text; 
namespace 属性的用法
{
    public class Student
    {
        private string stuName = "阿会楠";
        public string studentName
        {
            get { return stuName; }
            set { stuName = value; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            Console.Write(stu.studentName);
            Console.ReadKey();
        }
    }
}
       上 面代码中定义了一个属性studentName,它包含get访问器和set访问器。属性studentName封装了类Student中的字段 stuName,字段如果没有加访问控制符,被默认为private,外界不能直接访问它,现在外界可以通过studentName属性自由地存取 stuName字段了。
       属性的get和set都是可执行的程序语句组合,具有行为的特点;而使用具有get访问器和set访问器的属性时候就像使用字段一样,即可以作为左值接受数据,又可以作为右值输出数据,系统正是按照属性出现在语句中的位置,自动地选择是调用get还是调用set。
属性的读写控制
       属性中的get和set可以只用一个,如果只有get而没有set,那么这个属性只可读出,不可写入;如果只有set而没有get,那么这个属性是只写入,不可读出。
在属性中完成更多功能
       既然get和set是程序,那当然可以做更多的事情。一个合理的分工是:设计字段是为了便于内部方法使用,而尽量与外界隔绝;设计属性考虑的是方便外界的使用,但是不让外界知道的数据一律不给。
最后给一个例子:

using System;
using System.Collections.Generic;
using System.Text;
namespace 属性的用法
{
    public class Student
    {
        private string stuCollege = "jyu";//学校名称不可修改
        private string stuName = "阿会楠";
        private int stuAge = 22;
        public string studentName
        {
            get { return stuName; }
            set { stuName = value; }
        }
        public int studentAge
        {
            get { return stuAge; }
            set { stuAge = value; }
        }
        public string studentCollege
        {
            get { return stuCollege; }
        }
        public string studentInfo
        {
            get { return "学校:" + stuCollege + "名字:" + stuName + "岁数:" + stuAge;}
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            Console.Write(stu.studentCollege + "\n");
            stu.studentAge = 25;
            Console.Write(stu.studentInfo);
            Console.ReadKey();
        }
    }
}

输出结果是:

转载于:https://blog.51cto.com/zhangxuming/89501

asp.net get set用法相关推荐

  1. ASP:Literal控件用法

    ASP:Literal控件用法 刚开始学.NET的朋友可能不清楚Literal和Label到底有什么区别,其实它们也只有一个区别,就是在转换成客户端Html代码后,Label就成了<span&g ...

  2. C# ASP.NET MVC HtmlHelper用法大全

    C# ASP.NET MVC HtmlHelper用法大全 (原文) HTML扩展类的所有方法都有2个参数: 以textbox为例子 public static string TextBox( thi ...

  3. Asp.Net MVC HttpPost用法

    Asp.Net MVC HttpPost用法 一个Action只能用一个http 特性,例如:HttpPost 不能与HttpGet 或者多个HttpPost重复使用,否则会出错 也可以用 [Acce ...

  4. ASP.NET中EVAL用法大全

    <%# Bind("Subject") %> //绑定字段 <%# Container.DataItemIndex + 1%> //实现自动编号 <% ...

  5. [ASP.NET]DataBinder.Eval用法,文本绑定

    <%# Bind("Subject") %> //绑定字段 <%# Container.DataItemIndex + 1%> //实现自动编号 <% ...

  6. ASP.NET MVC PartialView用法

    子页面AreaSelect.cshtml页面的Controller代码: public ActionResult AreaSelect() {return PartialView(); } 父页面前台 ...

  7. .net mvc html使用方法,C# ASP.NET MVC HtmlHelper用法汇总

    1. @Html.Raw() 方法输出带有html标签的字符串: 如: @Html.Raw(" Hello World! ") 结果:Hello World! 2. @html.A ...

  8. asp.net 客户端msgbox用法

    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "alert", "alert('这是讯息')", ...

  9. ASP.NETnbsp;nbsp;DATASET用法

    : c#.net 使用方法 1.创建DataSet对象 DataSet ds = new DataSet(); DataSet ds = new DataSet("DataSetName&q ...

  10. ASP.NET MVC学习资料 新增几个开源项目

    ASP.NET MVC学习资料 新增几个开源项目 ASP.NET MVC MSDN API:  System.Web.Mvc Namespace (暂无中文版):  http://msdn.micro ...

最新文章

  1. ubuntu wireshark 普通用户抓包
  2. php字符串从a到z排序,js怎么实现中文按照A-Z排序
  3. 学习笔记(47):Python实战编程-pack布局
  4. 尚学堂java 答案解析 第六章
  5. 美团暑期日常实习前端面试
  6. 从苹果换回安卓是什么体验?
  7. sourceTree对git的新建项目、储藏代码、切换分支、回滚代码、提交代码
  8. 六零后的人马上步入老年生活,没有退休金,如何养老?
  9. [补档]noip2019集训测试赛(十四)
  10. matlab中转置矩阵的特征值,矩阵乘以矩阵的转置运算的解析
  11. 一台服务器接多台显示器,一台主机为两台显示器分屏工作的方法
  12. 欧洲人“家里蹲”,差点把美国互联网搞“瘫痪”
  13. Oracle 11g中的IO Calibrate(IO校准)
  14. html图片代码DWCS5,Dreamweaver cs5网页怎么添加图片
  15. 电路中滤波电容和退耦电容_带你学习退耦电容的PCB布局
  16. 数据库操作 -- C#, MYSQL,动软
  17. 架构 - 互联网架构服务化
  18. [C语言]之反省自己
  19. 洛谷 P1078 文化之旅
  20. cout保留两位小数

热门文章

  1. table td高度设置无效_Bootstrap Blazor 组件介绍 Table(一)
  2. python软件包版本查询的方法
  3. python-gui-pyqt5的使用方法-4--自定义信号的初识--多参数的使用
  4. mysql使用GROUP BY分组实现取前N条记录的方法或最近几条消费记录
  5. Selenium爬虫 -- 操控滚动条方法
  6. 从Hive导入数据到ES
  7. 把每列中最大的数据合并一行
  8. 网络基础---网络层
  9. 【课本】【No.5】大数定律和中心极限定律的理解
  10. Linux --- 常用命令