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 ... \nCpu:" + cpu + "\nRam:" + ram + "\nDisk:" + disk + "\n";

}

  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);

}

APS.NET MVC + EF (00)---C#基础的更多相关文章

  1. APS.NET MVC + EF (06)---模型

    在实际开发中,模型往往被划分为视图模型和业务模型两部分,视图模型靠近视图,业务模型靠近业务,但是在具体编码上,它们之间并不是隔离的. 6.1 视图模型和业务模型 模型大多数时候都是用来传递数据的.然而 ...

  2. APS.NET MVC + EF (14)---项目框架搭建

    一:框架搭建     1:先创建Model. 2:创建数据访问接口层.IUserInfoDal 在该接口中定义了常见的方法CURD以及分页方法. public interface IUserInfoD ...

  3. APS.NET MVC + EF (11)---过滤器

    过滤器本质就是对动作方法的执行过程进行干预,这种干预可以影响动作方法执行的各个过程.ASP.NET MVC 提供了4种类型的接口,并在接口中定义了各种成员,代表代码执行的各个阶段,这些接口和成员如表1 ...

  4. APS.NET MVC + EF (10)---使用AJAX

    在Web系统中,Ajax技术已经成为提高用户体验的必备技术.开发Ajax程序,涉及两方面的内容:一是客户端技术,二是服务器端技术. (1)客户端技术 核心工作是通过JavaScript向服务器发送数据 ...

  5. APS.NET MVC + EF (08)---数据注解和验证

    对于Web开发人员来说,用户输入验证一直是一个挑战.不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行.如果觉得验证是令人望而生畏的繁杂琐事,ASP.NET MVC框架提供了数据注解的方式帮助 ...

  6. APS.NET MVC + EF (07)---表单和HTML辅助方法

    在ASP.NET MVC中,可以借助HtmlHelper 对象来输出页面内容,提高开发效率.下面,我们将介绍一些常用的辅助方法. 7.1 HTML辅助方法 BeginForm 该辅助方法主要用来产生& ...

  7. APS.NET MVC + EF (05)---控制器

    Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务端的交互,并且负责协调Model与View之间数据传递,是ASP.NET MVC框架核心.Controller为ASP. ...

  8. APS.NET MVC + EF (04)---路由和数据传递

    4.1 视图引擎 ASP.NET MVC 提供两种视图引擎:ASPX(C#)和Razor(CSHTML),推荐使用Razor. 4.1.1 Razor的语法 在Razor视图中,所有的服务器端代码都是 ...

  9. APS.NET MVC + EF (03)---初始MVC

    3.1 MVC简介 MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(C ...

随机推荐

  1. springBoot配置druid监控报错Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource

    报错信息: Description: Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource ...

  2. C# HttpClient Post 参数同时上传文件 上传图片 调用接口

    // 调用接口上传文件 using (var client = new HttpClient()) { using (var multipartFormDataContent = new Multip ...

  3. 中国网络安全行业分类及全景图2019H1

    中国网络安全行业分类及全景图2019H1   概述 中国网络安全行业分类及全景图: 一级分类包含了端点安全.网络安全.应用安全.数据安全.身份与访问管理和安全管理六个一级分类,这些一级分类分别对应了网 ...

  4. 网络编程 UDP协议 TCP局域网客户端与服务端上传下载电影示例

    UDP协议 (了解) 称之为数据包协议,又称不可靠协议. 特点: 1) 不需要建立链接. 2) 不需要知道对方是否收到. 3) 数据不安全 4) 传输速度快 5)能支持并发 6) 不会粘包 7) 无需 ...

  5. 微信小程序自动化jest模拟场景/切出/切入

    await miniProgram.evaluate(() => getApp().clickBanner({ path: "pages/game/home/home", q ...

  6. KDiff3使用指南

    http://kdiff3.sourceforge.net/ KDiff3 is a diff and merge program that compares or merges two or thr ...

  7. Windbg Call Stack(调用堆栈)窗口的使用

    调用堆栈是指向程序计数器当前位置的函数调用链.调用堆栈的顶部函数是当前函数,下一个函数是调用当前函数的函数,依此类推.显示的调用堆栈基于当前程序计数器,除非更改寄存器上下文. 在 WinDbg 中,可 ...

  8. 研究下vc++的abort函数

    最近在调试几个问题时,发现跟abort函数有关,以前只是简单使用,现在却发现不简单,就多留意了下. 简介 abort中止当前进程并返回错误代码.异常终止一个进程.中止当前进程,返回一个错误代码.错误代 ...

  9. [RN] React Native代码转换成微信小程序代码的转换引擎工具

    React Native代码转换成微信小程序代码的转换引擎工具 https://github.com/areslabs/alita

  10. Vue自动化注册全局组件脚本

    今天有一个idea,vue一些组件,可能会全局都用到,我觉得在main.js写 Vue.component(name, instance) 然后很命令式,写着也不好看,想着能够有一个函数可以指定加载比 ...