c#4.5新语法--自动属性和隐式类型

1、自动属性
    自动属性是c#中属性定义的两种形式的一种:传统属性定义、自动属性。
    1.1 传统属性定义
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
 1.2 自动属性
         public int Age{get;set;}//该句代码的作用和上面传统属性定义的语句的作用是一样的
1.3 两种属性定义形式的优缺点对比
 1.3.1 传统属性定义形式
    缺点:定义属性的代码多 语法不简洁 繁琐
    优点:定义属性的时候,可以带一些逻辑判断,这是自动属性所不能做到的。
          例如:
       private int _age;
        public int Age
        {
            get { return _age; }
            set {
                if((0<value)&&(value<200))
                {
                _age = value;
                }
            }
        }
    1.3.2 自动属性定义形式
       优点:定义语法简介,高效、减少程序员书写的代码量
       缺点:定义属性的时候,不能做一些逻辑判断。
2、属性的作用
  1、定义属性可以保护类的私有字段(封装性)
  2、简化了对类的调用(定义属性之后,要调用累得字段_age,不需要再实例化类了)

3、隐式类型 var
3.1概述
  定义变量的方式有两种:传统定义方式、定义成隐式类型。
  传统定义方式:数据类型+变量名(定义的时候可以初始化,也可以不初始化) int k=0;int k;
  隐式类型定义方式:var+变量名(定义的时候必须初始化)var k=0;、
3.2 注意
(1).声明的同时必须初始化,因为编译时要根据初始化值类型来推断var的类型;
(2).声明后不能再修改数据类型,因为初始化的时候已经确定了var的类型了;
(3).只能作为方法局部变量使用。类的成员字段、方法的形参和返回值都不能使用!因为无法在编译时确定他们的类型!
(4).初始化表达式不能是匿名函数和null。
(5)、隐式类型不是动态类型,编译的时候,.net框架把var k=0;转换成了int k=0;

时间: 2024-11-07 19:37:46

c#4.5新语法--自动属性和隐式类型的相关文章

.NET中那些所谓的新语法之一:自动属性、隐式类型、命名参数与自动初始化器

开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法,它们相对以前的老语法相比,做了很多的改进,简化了很多繁杂的代码格式,也大大减少了我们这些菜鸟码农的代码量.但是,在开心欢乐之余,我们也不禁地对编译器内部到底为我们做了哪些事儿而感到好奇?于是,我们就借助反编译神器,去看看编译器到底做了啥事!其实本篇中很多都不算新语法,对于很多人来说可能都是接触了很久了,这里主要是针对.NET的老版本来说,是一个“相对”的新语法. /* 新语法索引 */ 1.自动属性 Auto-Implemente

C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法

1.自动属性(Auto-Implemented Properties) //以前的写法 .net2.0 private string _userName; public string UserName { get { return _userName; } set { _userName= value; } } //现在 只适合3.5以上 public string_userName {get;set;} 2.隐式类型var 它是在编译已经能确定变量的类型,是根据后面的值自动推断类型,编译时把推

C#语法糖之第一篇:自动属性&amp;隐式类型

今天给大家分享一下C#语法糖的简单的两个知识点吧. 自动属性:在 C# 4.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁. 客户端代码还可通过这些属性创建对象. get and set accessors." id="mt3">如下面的示例所示声明属性时,编译器将创建一个私有的匿名支持字段,该字段只能通过属性的 get 和 set 访问器进行访问. 我们C#4.0以前的传统方式的属性是用来封装字段的,这里我简单的对比一下这两种方

C#4.0语法糖之第一篇:自动属性&amp;隐式类型

今天给大家分享一下C#语法糖的简单的两个知识点吧. 自动属性:在 C# 4.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁. 客户端代码还可通过这些属性创建对象. get and set accessors." id="mt3">如下面的示例所示声明属性时,编译器将创建一个私有的匿名支持字段,该字段只能通过属性的 get 和 set 访问器进行访问. 我们C#4.0以前的传统方式的属性是用来封装字段的,这里我简单的对比一下这两种方

项目知识储备-自动属性 隐式类型Var

在项目中应用到的一些基本的小知识点,也不知道原理是什么 ,也不知道为什么.今天查了一下,原来这些东西在 之前的视频中就看到过.小小总结一下. 在 C# 3.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁. 客户端代码还可通过这些属性创建对象. 知识点一:自动属性 例如下面 class myClass{ //一般属性用法 privae string name; public string Name{ get { return name;} set { nam

JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标签及文本 2. 脚本:写JAVA代码,<% %> 3. 表达式:用于输出变量及表达式,<%= %> 4. 注释:分为三种 a) <!-- --> :JSP翻译成Servlet时也将进行翻译.页面中也有. b) <% /*.......*/ %>:JSP翻译成Se

自动转换(隐式转化)与强制转换(显式转换)

Java中,基本数据类型之间的运算,有时候需要类型的转换.8位的byte类型扩展转换为32位的int类型,不会发生信息丢失.相反,32位的int类型转换为8位的byte类型,很可能发生信息丢失,如发生一般舍弃高位部分. 隐式转化 小类型和大类型结合时,结果自动转换为大类型 字符串和数字结合时,结果自动转换为字符串 强制转换 强制转换是在要转换的数值或表达式之前指明目标类型,并用括号括住该类型.强制转换会发生信息损失,如: 1 2 3 int i = 200; byte b  = (byte)i;

CALayer常用属性,隐式动画

// // CALayerController.m // CALayer // // Created by xiaoyao on 15/3/5. // Copyright (c) 2015年 lijien. All rights reserved. // #import "CALayerController.h" #define WIDTH 50 @interface CALayerController () @end @implementation CALayerController

.NET中那些所谓的新语法

.NET中那些所谓的新语法之四:标准查询运算符与LINQ 摘要: 开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50多个为IEnumerable准备的扩展方法,而LINQ则是一种类似于SQL风格的查询表达式,它们可以...阅读全文 posted @ 2014-11-20 21:29 Edison Chou 阅读(1230) | 评论 (10) 编辑