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 ... \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 = "[email protected]";

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

}

原文地址:https://www.cnblogs.com/mrfang/p/10733476.html

时间: 2024-10-29 09:15:47

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

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

3.1 MVC简介 MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller).Asp.net MVC是微软提供的MVC开发框架. MVC将UI层分为了三个部分: 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则. 视图:定义应用程序界面的显示方式. 控制类:一组类,用于处理来自用户.整个应用程序流以及特定应用程序逻辑的通信. 3.2 第一个A

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

4.1 视图引擎 ASP.NET MVC 提供两种视图引擎:ASPX(C#)和Razor(CSHTML),推荐使用Razor. 4.1.1 Razor的语法 在Razor视图中,所有的服务器端代码都是围绕@展开的,下面介绍@使用的各种语法形式和应用情况. @( expression) 或 @ expression @是Razor中的一个重要符号,它被定义为Razor服务器代码块的开始符号.例如,我们可以在View中直接写C#代码输出日期 <p> @Datetime.Now.ToStirng()

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

在实际开发中,模型往往被划分为视图模型和业务模型两部分,视图模型靠近视图,业务模型靠近业务,但是在具体编码上,它们之间并不是隔离的. 6.1 视图模型和业务模型 模型大多数时候都是用来传递数据的.然而即使在传递数据这一点上,也可以看出,视图需要的模型更加灵活一点,因为视图变化性更大,而处理业务的模型更加稳定一些.因此,在实际开发中,往往有视图模型和业务模型的区分.在实际开发中,为了体现逻辑的分离,往往是视图模型和业务模型分别定义. 例如,在传统三层开发中,我们定义的实体类,可以看作是业务模型的定

APS.NET MVC + EF (01)---Linq和Lambda表达式

1.1 Linq介绍 LINQ全称 Language Integrated Query(语言集成查询).为我们提供一种统一的方式来查询和操作各种数据. LINQ to Object:是针对实现了IEnumerable<T>的对象的LINQ: LINQ to SQL:是针对关系数据库的LINQ: LINQ to XML:是针对XML文档的LINQ. LINQ除了提供一个统一的API来操作各种数据,并且为我们提供了编译时类型检查和动态创建查询表达式的能力. LINQ查询时有两种语法可供选择:查询表

MVC+EF 理解和实现仓储模式和工作单元模式

MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generic Repository in ASP.NET MVC using Entity Framework 文章介绍 在这篇文章中,我们试着来理解Repository(下文简称仓储)和Unit of Work(下文简称工作单元)模式.同时我们使用ASP.NET MVC和Entity Framework 搭

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(5)-前台JqueryEasyUI前台实现

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(5)-前台JqueryEasyUI前台实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装 前言:今天经理买了一个诺基亚的Windows Phone 8系统,特感兴趣,所以在哪里看了很长时间,这篇文章就写的有点迟, 从这个Demo开始到现在我已经写了4篇博客了,终于可以看到页面的东

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程 前言:前面几篇博客我们基本已经介绍完了搭建整个项目和数据库访问层以及一些业务逻辑层的实现,当然了,我们的数据库访问层这样还是可以在进行封装的,但是我到这里就行了吧,项目也不大,不需要那么麻烦的,那么我们今天开始介绍我们需要介绍的内容,那就是我

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这篇博客我们继续来实现我的权限系列,这个博客一段时间也没有写了,重点是我在想还写不写,最终我决定还是写下去,因为我们是为了学习,当别人提出意见的时候,我们可以参考和采纳,但是我们不一定非要采纳,上几篇博客大家都说用CodeFirst来实现,是啊,现在基本很少有人用我的这种方法来实现了,都是用CodeF

记录我的ASP.NET MVC+EF的印记

首先我想大家对ASP.NET MVC+EF并不陌生,可悲的是小菜我从2012年知道他的存在直到现在才开始学习.可以说是浪费了很多时间,由于楼主一直使用ADO.NET+三层的模式,所以总觉得有自己的一番天地,同时在此呼吁还有像我一样的橙色猿或攻城师们请正视它,时代的脚步不会因为你们而停留.但最近一段时间可以说是2014年下半年,整个行情都是在使用ASP.NET MVC+EF或者其他持久层来搭建项目.大势所趋不得不正视它了. 楼主的MVC水平还停留在2.0的水平,可想而知.当时是出于项目需要而使用了