C#笔记

1.控制器位于 Controllers 文件夹,视图位于 Views 文件夹,模型位于 Models 文件夹。

2.App_Data 文件夹

App_Data 文件夹用于存储应用程序数据。

我们将在本教程稍后的章节向 App_Data 文件夹添加 SQL 数据库。

3.Content 文件夹用于静态文件,比如样式表(CSS 文件)、图表和图像。

4.Home 控制器(用于首页和关于页面)以及一个 Account 控制器(用于登录页面)

5.Models 文件夹包含表示应用程序模型的类。模型存有并操作应用程序的数据。

6.Views文件夹

Views 文件夹存有与应用程序的显示相关的 HTML 文件(用户界面)。

Views 文件夹中含有每个控制器对于的一个文件夹。

Visual Web Developer 已创建了一个 Account 文件夹、一个 Home 文件夹、一个 Shared 文件夹(在 Views 文件夹内)。

Account 文件夹包含用于注册并登录用户帐户的页面。

Home 文件夹用于存储诸如首页和关于页之类的应用程序页面。

Shared 文件夹用于存储控制器间分享的视图(模板页和布局页)。

7.Controllers 文件夹包含负责处理用户输入和响应的控制器类。HomeController.cs(用AccountController.cs 

8.Razor 是一种向网页添加基于服务器的代码的标记语法

它是服务器端标记语言

9.C# 的主要 Razor 语法规则

    Razor 代码块由 @{ ... } 包围

    行内表达式(变量和函数)以 @ 开始

    代码语句以分号结束

    变量通过 var 关键词进行声明

    字符串用引用来包围

    C# 代码对大小写敏感

    C# 文件的扩展名是 .cshtml

10.Web API是网络应用程序接口

11.位到/Views/Shared目录下,打开 _Layout.cshtml文件。该文件称为布局页,共享为外

12.使用ViewBag,你可以容易地在视图模板和布局文件间传递其他参数。

13.MovieDbContext类表示实体框架的影片数据库内容,负责处理数据库中获取,存储和更

14.ActionLink的第一个参数是显示的文本(例如,<a>编辑</a>)。第二个参数是要调用的方法名。最后一个参数是生成的匿名路由数据对象(在这个例子中,是指值为1的ID)

15.HttpPost属性。该属性指定这个重载的Edit方法仅在接受Post请求时被调用。

    MVC的三层架构

16. 用户界面表示层(USL)

    业务逻辑层(BLL)

    数据访问层(DAL)

1:数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。而不必管其他操作。

2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

4.约定大于配置

18.execute执行,履行

19.throw new Exception("用户名重复!")抛出异常

20.MessageBox.Show("密码错误!")

21.执行insert,update用ExecuteNonQuery;执行select,count这些一行一列的用ExecuteScalar;执行多条查询结果的用ExecuteReader

22.jquary-easyUI前台布局界面

23.sort是排序。。reverse是遍历

24.异步操作

设备1向CPU发出数据传送请求,CPU处理请求,下达命令,并发生中断,设备1通过通道或DMA方式进行管理数据的传送,然后是设备2向CPU发出数据请求,CPU处理请求,下达命令,......

设备1向CPU发出数据传送完毕请求,CPU作出相应的处理(主要是完成数据传送完毕的收尾处理,还原到断点等等相关操作),也有可能是设备2数据传送完毕向CPU发出数据传送完毕请求,CPU作出相应的处理。这里体现了一个异步操作。如果这里用到的是同步操作的话,过程是这样的设备1向CPU发出数据传送请求,CPU处理请求,并等待数据传送完毕(CPU空闲),数据传送完毕CPU作出相应的处理。设备2.....。

25.CLR中包含管理线程池(thread pool)的代码。

26.常用的工具类一般放在Common中。

27.三层架构和MVC的区别:MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。

同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。

在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务

这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

  1. !IsPostBack的意思是首次加载页面

 

29.Request.Form和Request.QueryString两个接收参数来源不同,前者是接收从表单Form来的参数,后者是从URL来的参数。 

 

你这有这一句logon.asp?offline=true这是URL的传递参数。

Request.Form:获取以POST方式提交的数据(接收Form提交来的数据);

Request.QueryString:获取地址栏参数(以GET方式提交的数据)

Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。

request.querystring 获取get方法提交的数据

30.

方法

说明

getQueryString

获取QueryString的数组。

例如路径QueryStringDemo.html?id=5&type=1&flag=0

调用后返回["id=5", "type=1", "flag=0"]

getQueryStringByName

根据QueryString参数名称获取值

getQueryStringByIndex

根据QueryString参数索引获取值

  1. querystring和form都是asp中获取数据的一个方法. 

    form是用来获得表单提交的数据,querystring是用来获得标识在URL后面的所有返回的变量及其值; 

    如<a href=”4-1.asp?name=白芸&age=22”> 

    就可以用request.querystring("name")来获得上面链接传来的参数值. 

    例:a1=request.querystring("name") 

    a2=request.querystring("age") 

    则 a1为"白芸",a2为"22". 

32.public string StudentName    //属性的读写设置

{

      get{return stuName;}

      set{stuName=value;}

}

get就是外部类可以访问此类里面的私有字段值

set就是外部类可以修改此类里面的私有字段值

他们都是一个中介

这样理解就好了

33.C#的委托最经典的解释:

例子:

1

this.Activated += new EventHandler(Form1_Activated);

这是一个委托的原理.

1

2

this.Activated=你吃完饭; 

Form1_Activated=喊我一声

这句话的意思就是把这两个事放在一起了,意思就是叫你吃完饭了喊我一声。我委托你吃完饭了,喊我一声。这样我就不用过一会就来看一下你吃完了没有了,已经委托你了。

  1. String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项。

Eg: project.P_SAVEDATE = string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now);

(1)

string p1 = "Jackie";

string p2 = "Aillo";

Response.Write(String.Format("Hello {0}, I'm {1}", p1, p2));

(2)

Response.Write(String.Format("Hello {0}, I'm {1}", "Jackie", "Aillo"));

 

这二者的效果是一样的。都是将最后面的两项的值分别替换第一项的{0}和{1}。

输出的结果是:Hello Jackie, I'm Aillo

 

Eg://以科学计数法的格式输出

double p1 = 1000000;

Response.Write(String.Format("{0:E2}", p1));

{0:N2} 中的N3,f3表示格式化之后数据的类型以及小数的位数。如:N2表示带2个小数的数字;

与此类似:

N或者n  表示  数字

F或者f   表示  固定点

E或者e  表示  科学计数法

D或者d  表示  十进制数

X或者x  表示  十六进制

G或者g  表示  常规

C或者c  表示  货币

  1. 若要测试是否字符串的值为 null 或 String.Empty, ,使用 IsNullOrEmpty 方法。

  2. C# 的.ToString() 转换为字符串进行处理

37.检查数组中是否包含某元素:

arr.Contains(str);

38.隐式转化:即数据的类型的转换由编译器自动进行的,不需要人工干预的数据转换。

显示转换:与隐式转换相反的数据类型的转换,即需要人为强制干预的数据转换。

39.foreach语句是c#中新增的循环语句,他对于处理数组及集合等数据类型特别方便。

foreach语句的一般语法格式如下:

foreach(数据类型 标识符 in 表达式)

{

循环体2

}。

  1. datagrid的分页:

 

实现分页传入page当前页和rows每页记录数,返回时必须total总记录数,rows存放每页记

,那么这个rows就是从db中查询30-60的记录)

Eg:   rows = depotList.Skip((page - 1) * rows)

                                      .Take(rows)

                                      .ToList(),

                total = depotList.Count()

//datagrid的分页的loader属性

41. loader: function (param, success, error)

                    {

                        var data = $(this).datagrid("options").data;

                        var res = new Object();

                        res.total = data.length;

                        res.rows = Enumerable.From(data).Skip((param.page - 1) * param.rows).Take(param.rows).ToArray();

                        success(res);

                    }

42.abstract

 

是抽象类型,abstract(抽象)修饰符,可以修饰类和方法

 

1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承

 

2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现

 

注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。

 

abstract修饰符在修饰类时必须放在类名前。

 

abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。

 

注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。

43.重载、重写、覆写,分别指的是overload、override、new。

一、override重写,是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同。用于扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现。提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。

注意事项:

1.重写基方法必须具有与override方法相同的签名。

2.override声明不能更改virtual方法的可访问性,且override方法与virtual方法必须具有相同级别访问修饰符。

3.不能用new、static、virtual修饰符修改override方法。

4.重写属性声明必须指定与继承的属性完全相同的访问修饰符、类型和名称。

5.重写的属性必须是virtual、abstract或override。

6.不能重写非虚方法或静态方法。

7.父类中有abstract,那么子类同名方法必定有override,若父类中有 virtual方法,子类同名方法不一定是override,可能是overload。

8.override必定有父子类关系。

二、overload重载,在同一个类中方法名相同、参数或返回值不同的多个方法即为方法重载。

注意事项:

1.出现在同一个类中。

2.参数列表不同或返回类型和参数列表都不同,只有返回类型不同不能重载。(参数列表包括

三、overwrite覆写,用new实现。在子类中用 new 关键字修饰定义的与父类中同名的方法

  1. 三层架构的目的:解耦 :任何一层发生变化,都不会影响另外的一层

(发生在哪一层的变化,只需更改该层,不需要更改整个系统。层次清晰,分工明确,每层之间耦合度低——提高了效率,适应需求变化,可维护性高,可扩展性高)

优点:

  • 1,结构清晰、耦合度低

  • 2,可维护性高,可扩展性高

  • 3,利于开发任务同步进行, 容易适应需求变化

45. string[] strArr = PRODUCTCODE_W.Split(new char[]{';'});

拆分字符串

 46.foreach (var depot in depotList)

            {

                string tprtStr = "";

                foreach (var tprt in depot.DepotRelateTprt)

                {

                    tprtStr += tprt.BASENAME + ";";

                }

                depot.TprtStr = tprtStr;

              

            }

合并字符串

  1. Microsoft 在 .NET Framework 4 中添加了一个名为可移植类库 (PCL) 的新功能

48.  public override string Key

        {

            get { return DEPOT_CODE + BASECODE + BASENAME + P_CODE; }

        }

类里面的组合也有唯一性。

49. if (!$("#BegDate").val() || !$("#EndDate").val())

            {

                $.messager.alert("系统消息", "请将查询时间填写完整!", "error");

                return false;

            }

            if ($("#BegDate").val() > $("#EndDate").val())

            {

                $.messager.alert("系统消息", "开始日期不能大于结束日期!", "error");

                return false;

            }

50.  AND (SUBSTR(A.OPERATE_TIME, 0, 10) >= BEGDATE)

AND (SUBSTR(A.OPERATE_TIME, 0, 10) <= ENDDATE)

51. INSTR

52.AddRange

53.   function ChangeVal()

    {

        if ($("#D_TYPE").val() == '0')

        {

            $("#Depot_info tr:gt(0)").each(function (idx, each)

            {

                $(each).prop("hidden", true);

            });

        }

        else

        {

            $("#Depot_info tr:gt(0)").each(function (idx, each)

            {

                $(each).prop("hidden", false);

            });

        }

    }

 

隐藏控件

54.ProductAdd.push.apply(ProductAdd, pensionList.Tempension)

  在后面添加

55. function ChangeVal()

    {

        if ($("#D_TYPE").val() == '0')

        {

            $("#Depot_info tr:gt(0)").css("display", "none");

        }

    }

56.!string.IsNullOrEmpty(str) && str != "[]"

  1. Jqary选择器的模糊匹配:

  [属性名称] 匹配包含给定属性的元素

[att=value] 匹配包含给定属性的元素 (大小写区分)

[att*=value] 模糊匹配包含有value的原色

[att!=value] 不能是这个值

[att^=value] 以value开头的所有元素

[att$=value] 以value结尾的所有元素

[att1][att2][att3]… 匹配多个属性条件中的一个

58.

Execute  是增删改

Quary 是查

59.

    随机一个数字  按照时间随机

pensiondepotchangetrace.P_CODE = DateTime.Now.ToString("yyyyMMddHHmmss");

 

  1.  window.opener 返回的是创建当前窗口的那个父窗口的引用,

  $.messager.confirm("系统提示?", "任务提交成功|,您确定要关闭当前页面吗?", function (r)

                        {

                            if (r) {

                                if (window.opener != null) {

                                    try {

                                        window.opener.DoQuery();

                                    } catch (e) { }

                                }

                                   //设置父窗体为空,阻断当前页面和其他页面的关系

                                window.opener = null;

                                //打开一个新页面覆盖当前窗体

                                window.open('', '_self');

                                //关闭新建的页面

                                window.close();

                            }

                        });

 

70.foreach  是专门针对数组里面的值得循环

 

71.//字符串包含字符串

 

str.Contains("")

 

//比较字符串

 

String.Compare(str1,str2 ==0)

 

//获取字符串

 

str.Substring()

 

//连接字符串

 

String.Join()

 

DateTime dt = new DateTime(2017,4,1,13,16,32,108);

string.Format("{0:y yy yyy yyyy}",dt); //17 17 2017 2017string.Format("{0:M MM MMM MMMM}", dt);//4 04 四月 四月string.Format("{0:d dd ddd dddd}", dt);//1 01 周六 星期六

string.Format("{0:t tt}", dt);//下 下午string.Format("{0:H HH}", dt);//13 13

string.Format("{0:h hh}", dt);//1 01string.Format("{0:m mm}", dt);//16 16

string.Format("{0:s ss}", dt);//32 32string.Format("{0:F FF FFF FFFF FFFFF FFFFFF FFFFFFF}", dt);//1 1 108 108 108 108 108

string.Format("{0:f ff fff ffff fffff ffffff fffffff}", dt);//1 10 108 1080 10800 108000 1080000string.Format("{0:z zz zzz}", dt);//+8 +08 +08:00

 

 

除去string.Format()可以对日期进行格式化之外,*.ToString()也可以实现相同的效果:

DateTime dt = new DateTime(2017,4,1,13,16,32,108);

dt.ToString("y yy yyy yyyy");//17 17 2017 2017

dt.ToString("M MM MMM MMMM");//4 04 四月 四月

dt.ToString("d dd ddd dddd");//1 01 周六 星期六

dt.ToString("t tt");//下 下午

dt.ToString("H HH");//13 13

dt.ToString("h hh");//1 01

dt.ToString("m mm");//16 16

dt.ToString("s ss");//32 32

dt.ToString("F FF FFF FFFF FFFFF FFFFFF FFFFFFF");//1 1 108 108 108 108 108

dt.ToString("f ff fff ffff fffff ffffff fffffff");//1 10 108 1080 10800 108000 1080000

dt.ToString("z zz zzz");//+8 +08 +08:00

 

dt.ToString("yyyy/MM/dd HH:mm:ss.fff"); //2017/04/01 13:16:32.108

dt.ToString("yyyy/MM/dd dddd");      //2017/04/01 星期六

dt.ToString("yyyy/MM/dd dddd tt hh:mm"); //2017/04/01 星期六 下午 01:16

dt.ToString("yyyyMMdd");         //20170401

dt.ToString("yyyy-MM-dd HH:mm:ss.fff"); //2017-04-01 13:16:32.108

     

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值