• APS.NET MVC + EF (00)---C#基础


       

    1. 命名参数

      命名参数是把参数附上参数名称,这样在调用方法的时候不必按照原来的参数顺序填写参数,只需要对应好参数的名称也能完成方法调用。

    static void Main(string[] args)

    {

    Console.WriteLine(ShowComputer("i3 370M","2G","320G"));

    Console.WriteLine(ShowComputer(disk: "320G", cpu: "i3 370M", ram: "2G"));

    Console.Read();

    }

    private static string ShowComputer(string cpu, string ram, string disk)

    {

    return "My computer ... Cpu:" + cpu + " Ram:" + ram + " Disk:" + disk + " ";

    }

       

    1. 隐式类型

      来看看下面的代码:

      var a=1; //int a=1;

      var b="123"; //string b="123";

      var myObj=new MyObj(); //MyObj myObj=new MyObj();

      上面的每行代码,与后面的注释起到的作用完全一样。也就是说,在声明一个变量(并且同时给它赋值)的时候,完全不用指定变量的类型,只要一个var就可以解决问题,编译器会根据变量的值,推导出变量的类型。

      注意:必须在声明的同时赋值。

    2. 匿名类型

      创建一个对象,一定要先定义这个对象的类型吗?不一定,看下面的代码

         

      var oddsAndEnds = new[]{

      new {Name="MVC" , Category="Pattern"},

      new {Name="Hat" , Category="Clothing"},

      new {Name="Apple" , Category="Fruit"}

      };

      StringBuilder result = new StringBuilder();

      foreach (var item in oddsAndEnds) {

      result.Append(item.Name).Append(" ");

      }

      new关键字之后就直接为对象定义属性,并为这些属性赋值。而且,对象创建出来之后,在创建对象的方法中,还可以畅通无阻的访问对象的属性。

      通过结合对象初始化器和类型推断,可以创建简单的数据存储对象,而不需要定义相应的类或结构(匿名)。

         

    3. dynameic类型

      dynameic类型成为"动态类型"。我们平时定义一个int i=1是静态类型,静态类型就是我们在没有编译的时候已经明确的知道他是一个int类型,动态语言是我们在运行时才会知道的类型。在编写动态类型的时候无法使用vs的智能提示。

    class Person

    {

    public string Name { get; set; }

    }

    class Program

    {

    static void Main(string[] args)

    {

    dynamic c = new Person();

    c.Name = "abc";

    c.Age = 30; //编译时不报错,运行时报错

    Console.WriteLine(c.Name);

    }

    }

    Dynamic类型的实例和其他类型的实例间的转换是很简单的,直接赋值即可。例如:

    dynamic d1 = 7;

    dynamic d2 = "a string";

    dynamic d3 = System.DateTime.Today;

       

    int i = d1;

    string str = d2;

    DateTime dt = d3;

    1. 可空类型

    在程序开发中,有时候需要值类型也为可空类型,比如,在数据库中,我们可以把一个日期Datetime设置为null。

    可空类型的定义语法为: System.Nullable<类型> 变量名

    例如: System.Nullable<int> num;

    "?"语法就是定义Nullable<T>的一个快捷语法,上面的示例可以写作:

    int? num;

    把一个值类型变量定义为对应的Nullable类型后, 这个变量就有一些其他的属性

    now.HasValue 是一个bool值,表示该变量是否非空.

    now.Value 就是对应的DateTime类型值. 注意不要在now.HasValue为false的时候使用这个属性。例如:

    int? num1=null;

    int num2 = num1.HasValue ? Num1 : 0 ;

    也可以使用"??"运算符分配默认值,例如:

    int num2 = num1 ?? 0;

    1. 扩展方法

      扩展方法使你能够向现有类型"添加"方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。

        下面的示例为String添加判断输入的string是否邮箱格式的功能。

    using System.Text.RegularExpressions; //正则表达式命名空间

    namespace Extension_Method

    {

    //类必须为static的

    public static class StringHelper

    {

    //扩展方法必须为静态的

    //扩展方法的第一个参数必须由this来修饰(第一个参数是被扩展的对象)

    public static bool isEmail(this string _string)

    {

    return Regex.IsMatch(_string,

    @"^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$");

    }

    }

    public static void main(string[] args)

    {

    string str = "czx@123.com";

    Console.WriteLine(str.isEmail()); //调用

    }

    }

    1. 泛型方法

      在 C# 语言中泛型方法是指通过泛型来约束方法中的参数类型,也可以理解为对数据类型设置了参数。

      如果没有泛型,每次方法中的参数类型都是固定的,不能随意更改。

      在使用泛型后,方法中的数据类型则有指定的泛型来约束,即可以根据提供的泛型来传递不同类型的参数。

    static void Main(string[] args)

    {

    //将T设置为double类型

    Add<double>(3.3, 4);

    //将T设置为int类型

    Add<int>(3, 4);

    }

    //加法运算

    private static void Add<T>(T a, T b)

    {

    double sum = double.Parse(a.ToString()) + double.Parse(b.ToString());

    Console.WriteLine(sum);

    }

       

       

       

       

       

  • 相关阅读:
    Bayer RGB和RGB Raw
    YUV像素和ycbcr
    像素,分辨率,PPI(像素密度),BPP 扫盲
    Shadow Register 是什么?
    ITU-R BT.656 协议
    octopress的一些总结
    0ull 是什么意思?
    attribute section的用法
    常见指令集架构
    Centos 用户组管理
  • 原文地址:https://www.cnblogs.com/mrfang/p/10733476.html
Copyright © 2020-2023  润新知