根据属性的实现方式,属性可分为自动实现的属性和常规属性。

常规属性需要具体的人为的实现get访问器或者set访问器,而且一般需要有一个字段与之相对应;而自动实现的属性的get和set访问器的实现部分被省略掉了,而且代码中不需要有相对应的字段。

常规属性:

    public class Person
{
//-----------------------
//普通属性
//-----------------------
private string name;
/// <summary>姓名</summary>
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
}

自动实现的属性:

    public class Person
{
//-----------------------
//自动实现的属性
//-----------------------
/// <summary>姓名</summary>
public string Name
{
get;
set;
}
}

可以给自动实现的属性的get访问器或者set访问器添加访问权限修饰符(private,protected,internal),以控制该属性的访问权限。

(*注意给get或者set访问器添加的访问权限修饰符的访问权限,必须比该属性整体的访问属性的访问权限要小)

通过给get或者set访问器添加的访问权限修饰符,实现只读或者只写:

    public class Person
{
//-----------------------
//自动实现的属性实现只读
//-----------------------
/// <summary>姓名</summary>
public string Name
{
get;
private set;
}
}
    public class Person
{
//-----------------------
//自动实现的属性实现只写
//-----------------------
/// <summary>姓名</summary>
public string Name
{
private get;
set;
}
}

自动实现的属性有以下几点需要注意:

①必须同时实现set访问器和get访问器,缺一不可;

②自动实现的属性,编译器在运行时会自动生成一个私有的字段,这个自动生成的字段不能够直接访问;

③当需要实现对数据的合法性验证或者其它特殊处理的时候不能用自动实现的属性。

C#:常规属性和自动实现的属性的更多相关文章

  1. Spring入门(5)-自动装配Bean属性

    Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...

  2. Spring - bean的autowire属性(自动装配)

    当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注 ...

  3. C#杂记-自动实现的属性(自动属性)

    基础知识: 普通属性:可读或可写并将值存储到一个私有变量中的属性,不对数据做任何加工,没有自定义代码. private string name public string Name { get{ret ...

  4. C#属性、自动属性、字段之间的区别和理解

    .ctor是构造方法的意思,注意委托其实也是有构造方法的(不过是编译器自动创建的是私有的)貌似它的参数一个是委托引用的方法所属的对象(或Type对象),一个是该方法的指针: 1.属性的概念其实和字段是 ...

  5. SpringBoot注解把配置文件自动映射到属性和实体类实战

    SpringBoot注解把配置文件自动映射到属性和实体类实战 简介:讲解使用@value注解配置文件自动映射到属性和实体类 1.配置文件加载 方式一 1.Controller上面配置 @Propert ...

  6. mybatis JdbcTypeInterceptor - 运行时自动添加 jdbcType 属性

    上代码: package tk.mybatis.plugin; import org.apache.ibatis.executor.ErrorContext; import org.apache.ib ...

  7. springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...

  8. Spring Bean 注入 1 - 构造方法注入,属性注入,自动装配

    1.代码结构图 xxx 2.bean代码 package com.xxx.bean; /** * Created with IntelliJ IDEA. * User: zhenwei.liu * D ...

  9. 用Emmet写CSS3属性会自动添加前缀

    CSS3的很多属性都包含浏览器厂商前缀,用Emmet写CSS3属性会自动添加前缀,比如输入trs 会展开为: -webkit-transition: prop time; -moz-transitio ...

随机推荐

  1. HashMap存值

    package com.exmple.tool; import java.util.HashMap; public class UserTool { public static HashMap< ...

  2. ubuntu使用记录

    常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir     ...

  3. 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类

    30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...

  4. ubuntu下搭建JAVA开发环境【转】

    转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...

  5. Android消息处理机制(Handler 与Message)---01

    一.handler的使用场景为么会有handler?(部分内容图片摘自http://www.runoob.com/w3cnote/android-tutorial-handler-message.ht ...

  6. 安装使用RESTful 框架SLIM方法

    相关框架: http://www.golaravel.com 是一个PHP框架,内置名为LUMEN的RESTful API框架,有中文文档, http://lumen.golaravel.com/do ...

  7. Quick-cocos2d-x v3.3 SocketTCP链接(转)

    Quick-Cocos2d-x v3.3里面提供了两种长连接WebSockets.SocketTCP,这里说一下SocketTCP的用法. 1 2 3 local net = require(&quo ...

  8. Find them, Catch them

    Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36488 Accepted: 111 ...

  9. Python相对路径转绝对路径,绝对路径转相对路径

    1.绝对路径转相对路径 print os.path.relpath("d:/MyProj/MyFile.txt") #..\MyProj\MyFile.txt 是根据当前路径的相对 ...

  10. CSU 1325: A very hard problem 中南月赛的一道题。

    1325: A very hard problem Time Limit: 3 Sec  Memory Limit: 160 MBSubmit: 203  Solved: 53[Submit][Sta ...