zoukankan      html  css  js  c++  java
  • C#(99):C# 5.0 新特性(.NET Framework 4.5 与 Visual Studio 2012 )

    一、C#新增的小功能

    1、绑定运算符:=:

    这个只是简化了数据绑定,跟ASP.NET MVC3不断改进一样,其实不是什么亮点改进。

    comboBox1.Text :=: textBox1.Text; //将文本框的内容绑定到下拉框。  

    2、带参数的泛型构造函数

    这个的加入给一些设计增加了强大功能,泛型早在C#2.0加入后就有着强大的应用,一般稍微设计比较好的框架,都会用到泛型,C#5.0加入带参数泛型构造函数,则在原有基础上对C#泛型完善了很多。

    public class T MyClass : T: class, new()  
    public class T MyClass : T:class, new(int)  

    3、case支持表达式

    这个是一个我很早就想如果能这样就好了,没想到在C#5.0里就加入此功能,以前case里只能写一个具体的常量,而现在可以加表达式了,灵活多了。

    switch(myobj){
      case string.IsNullorEmpty(myotherobj):
     ..... 
      case myotherobj.Trim().Lower: 
     ....
    }

    4、扩展属性

    我们在C#3.0里有扩展方法,那么在C#5.0里将会加入扩展属性的感念,对照扩展方法,不难理解扩展属性的概念了。以下为扩展属性的定义举例:

    [Associate(string)]
    public static int MyExtensionProperty { get;set;}

    5、支持null类型运算

    int x? = null;
    int y? = x + 40;
    
    Myobject obj = null;
    Myotherobj obj2 = obj.MyProperty ??? new Myotherobj();

    二、Asynchronous methods 异步方法

    见专题。

    三、Caller info attributes:调用时访问调用者的信息

    为了便于调试,C#5.0提供了一种新特性:CallerInfoAttributes。

    它包括三个主要的类:

    1. [CallerMemberName] :返回调用函数的名称。
    2. [CallerFilePath] :返回调用函数所在源文件全路径信息 。
    3. [CallerLineNumber] :返回调用函数调用具体行号。

    该功能主要是用于调试,示例代码如下:

    在本示例中,我们添加了一个Log函数,以对程序进行日志记录,并在主函数中进行调用。

    using System;
    using System.Runtime.CompilerServices;
    
    namespace TestPro
    {
        class Program
        {
            public static void Main()
            {
                Log("Test.");
            } 
    
            // 对日志消息进行记录,同时所有内容均有默认值,如果获取失败,则使用默认值。
            public static void Log(string message,
                [CallerMemberName] string callerName = "unknown", 
                [CallerFilePath] string callerFilePath = "unknown", 
                [CallerLineNumber] int callerLineNumber = -1)
            {
                Console.WriteLine("Message: {0}", message);
                Console.WriteLine("Caller's Name: {0}", callerName);
                Console.WriteLine("Caller's FilePath: {0}", callerFilePath);
                Console.WriteLine("Caller's LineNumber: {0}", callerLineNumber);
            }
        }
    }

    程序执行以后会显示以下内容。

    Message: Test.
    Caller Name: Main
    Caller FilePath: C:UsersAdministratorsource
    eposTestProProgram.cs
    Caller Line number: 10
    请按任意键继续. . .
  • 相关阅读:
    魅蓝Note有几种颜色 魅蓝Note哪个颜色好看
    Android在跳转市场进行评分问题总结
    轻松学会多线程(四)——synchronized同步keyword知多少
    对于stackoverflow的中文翻译的相关问题
    HBase总结(二十)HBase经常使用shell命令具体说明
    Tiny语言执行环境TM机源码
    【IOS工具类】获得设备唯一标识(兼容IOS5,6,7)
    VMwave下Ubuntu扩展磁盘空间
    wordpress搭建后地址栏页面显示IP地址的问题
    成都Java培训机构太多,该如何选择呢?
  • 原文地址:https://www.cnblogs.com/springsnow/p/13140607.html
Copyright © 2011-2022 走看看