C#基础系列(一)
1、vs中F5(调试)和Ctrl + F5(直接运行不调试)的区别:
Ctrl+F5是直接运行生成的程序,不进行重新编绎,所以运行起来比较快
F5是重新编绎后再运行,这样可以在程序代码中设置断点跟踪来调试程序
f5会重新生成项目,而ctrl+f5不会重新生成。
配置文件:F5调试需设置debug=true 启用调试 ,上线后要改成false
<system.web>
<compilation debug="false" targetFramework="4.0"/>
</system.web>
2、vs会给我们的项目(不管是控制台还是web)自动生成两个文件夹bin和obj:
bin里是程序编译最终生成的东西(一般为程序集或.exe文件),当我们运行程序时,其实运行的就是这里面的东西。而不是每次运行都会再去编译了,除非我们手动主动去编译,程序在vs解决方案中用编译器每重新生成一次,这里面的所有文件都会被更新(假如生成失败,文件夹里什么都没有)。这里除了用本项目的dll或程序集,也会包括引用到的第三方程序集。
obj里面是生成编译过程中产生的一系列中间文件,可以不用管它;
3、C#自带的两个常用泛型委托:
Func<T> 必须要有返回值的,所以至少有一个泛型类型参数(输出类型),当有参数时,输出参数类型为最后一个
Action 委托类型:是没有返回值的,可以有任意个参数。
4、自定义控件(.ascx):
在待使用的页面使用之前先注册,如 <%@ Register Src="header.ascx" TagName="header" TagPrefix="uc1" %> 值分别对应 自定义控件url 标签前缀
使用时: <uc2:footer ID="Footer1" runat="server" /> // 标签前缀 :标签名称
5 .asp.net <%%>&<%#%>&<%=%>&<%@%>&<%$%>用法区别:
1).<% %>用来绑定后台代码
如:
< %
for(int i=0;i<100;i++)
{
Reaponse.Write(i.ToString());
}
%>
2).<%# %> 是在绑定控件DataBind()方法执行时被执行,用于数据绑定
<table>
<tr>
<td>ID</td>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td><%# Eval("ID") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Age")%></td>
<td><%# DataBinder.Eval(Container,"DataItem.Name")%></td>
<td><%# ((DataRowView)Container.DataItem)["Sex"]%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
3).<%= %>用来绑定后台的变量或方法且有返回值 的,但此时的变量名或方法的访问修饰符为protected或public
如:<%=name%> <%=getstr()%>
4).<%@ %>用来导入后台命名空间
如:<%@ import namespace="system.data">
5).<%$ %>用来绑定web.config里的字符串(键值对)
如:<asp:TextBox runat="server" ID="cc" Text="<%$ ConnectionStrings:pubs%>"></asp:TextBox>
web.config
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<connectionStrings>
<add name="pubs" connectionString="Server=.;database=pubs;uid=sa;pwd=" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
6).DataBind,获得的数据,系统会将其默认为String,怎样转化为其它的类型?
DataBinder.eval_r(Container.DataItem,"转换的类型","格式") 注:格式可以不要 此方法=eval_r("转换的类型")
6、ASP.NET 中的Eval()方法 :见 ,http://fhuan123.iteye.com/blog/824490
7、?? 运算符称作 null 合并运算符。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
8、对一个集合排序 如 List<Person>
public class Person
{
public int id { get; set; }
public string name { get; set; }
public int age { get; set; }
}
方法一:直接对对象进行排序
ps.Sort( (P x,P y) => x.age - y.age ); //直接对ps对象排序 无返回值,此时是升序 颠倒x y顺序即为降序
方法二、返回排序后的结果:
ps= ps.OrderByDescending(c => c.age).ToList();
ps.OrderBy(s => s.age).ToList();
所以想改变原集合对象,可使用方法一 不想改变原集合对象可使用方法二。
9、判断B集合中是否有A集合中的元素:
List<int> listA = new List<int> { 12,34,456,67,98 };
List<int> listB = new List<int> { 74,84,63 };
listB.Exists(listA.Contains); //true 存在 false不存在
List<T>.Exists()方法
public bool Exists(
Predicate<T> match
)
参数是一个泛型委托对象 :public delegate bool Predicate<in T>(T obj);
如果 List<T> 包含的一個或多個元素符合指定之述詞所定義的條件,則為 true,否則為 false。
List<T>.Find()和FindAll也接受同样的参数。
其实这几个方法会把调用者集合对象里的每个元素当做参数运行下这个参数(委托),根据其返回值,来最终决定函数的返回值。
10、集合分组: IEnumerable<T>.GroupBy()
分组方法返回的数据类型: public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector); 是一个可枚举的集合
集合中的每个元素也是一个可枚举对象: public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable 该对象有个属性 Key 返回分组的键。
11、项目(类库 web程序等)直接的引用:
那个类库是基于4.5框架的 这个是4.0的 低版本不能引用高版本的 反之可以
右键项目=》属性=》目标框架
12、项目之间的相互应用:
有个A项目(假设是Web项目)两个类库项目B、C
如果B需要引用C (B的bin文件夹中最终肯定会有C.dll)
A在引用B的同时必须把C引用进去 (即在A项目的Bin中有C的.dll):
备注:如果把C.程序集和B程序集放在一起 只要手动引用B就行了 vs检测到和B中引用到的其它程序集都会一同引用进来的(如果不在同一个目录下 则需要单独引用下)
备注:如果A本身就需要引用到C 而不是通过B 则还是需要单独引用C.
13、default(T):
返回T类型的默认值:T值类型 返回0 引用类型null 结构类型:返回结构类型 每个成员是其默认值。
14.断言
任何地方调用 阻断当前线程 弹出弹框
System.Diagnostics.Debug.Fail("123");
15、时间格式化:MM表示月份 mm表示分钟数 HH和hh分别表示24小时和12小时制,时数。
DateTime dt = DateTime.Now;
Console.WriteLine(dt.ToString()); //2015/12/11 23:23:59
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss")); //2015-12-11 23:23:59
Console.WriteLine(dt.ToString("yyyy-MM-dd hh:mm:ss")); //2015-12-11 11:23:59
C#基础系列(一)的更多相关文章
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- C#基础系列——Attribute特性使用
前言:上篇 C#基础系列——反射笔记 总结了下反射得基础用法,这章我们来看看C#的另一个基础技术——特性. 1.什么是特性:就博主的理解,特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属 ...
- C#基础系列——小话泛型
前言:前面两章介绍了C#的两个常用技术:C#基础系列——反射笔记 和 C#基础系列——Attribute特性使用 .这一章来总结下C#泛型技术的使用.据博主的使用经历,觉得泛型也是为了重用而生的,并且 ...
- C#基础系列——委托实现简单设计模式
前言:上一篇介绍了下多线程的相关知识:C#基础系列——多线程的常见用法详解,里面就提到了委托变量.这篇简单介绍下委托的使用.当然啦,园子里面很多介绍委托的文章都会说道:委托和事件的概念就像一道坎,过了 ...
- C#基础系列——委托和设计模式(二)
前言:前篇 C#基础系列——委托实现简单设计模式 简单介绍了下委托的定义及简单用法.这篇打算从设计模式的角度去解析下委托的使用.我们知道使用委托可以实现对象行为(方法)的动态绑定,从而提高设计的灵活性 ...
- C#基础系列——再也不用担心面试官问我“事件”了
前言:作为.Net攻城狮,你面试过程中是否遇到过这样的问题呢:什么是事件?事件和委托的区别?既然事件作为一种特殊的委托,那么它的优势如何体现?诸如此类...你是否也曾经被问到过?你又是否都答出来了呢? ...
- C#基础系列——异步编程初探:async和await
前言:前面有篇从应用层面上面介绍了下多线程的几种用法,有博友就说到了async, await等新语法.确实,没有异步的多线程是单调的.乏味的,async和await是出现在C#5.0之后,它的出现给了 ...
- C#基础系列——一场风花雪月的邂逅:接口和抽象类
前言:最近一个认识的朋友准备转行做编程,看他自己边看视频边学习,挺有干劲的.那天他问我接口和抽象类这两个东西,他说,既然它们如此相像, 我用抽象类就能解决的问题,又整个接口出来干嘛,这不是误导初学者吗 ...
- 2015年12月28日 Java基础系列(六)流
2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流
- c#基础系列(转)
转:http://www.cnblogs.com/landeanfen/p/4953025.html C#基础系列——一场风花雪月的邂逅:接口和抽象类 前言:最近一个认识的朋友准备转行做编程,看他自己 ...
随机推荐
- Nginx、LVS及HAProxy负载均衡软件的优缺点详解
http://www.csdn.net/article/2014-07-24/2820837
- nginx配置静态文件服务器
搭建文件服务器 要点就是root目录,会自动指向索引文件 如: index, index.html等 server { client_max_body_size 4G; listen 80; ## l ...
- 对Delphi控件作用的新理解(控件本身的源代码就是一个很强的工业级源码)
最近几天,对Delphi控件的含义有了一个新的理解.其实它不仅仅是给程序员提供功能的一个表层调用,控件本身的源代码就是一个很强的工业级源码.而且它的Main例子,往往就已经是半成品.而别的语言里没有那 ...
- 配置SQL Server 2008服务器
怎么配置SQL Server 2008服务器_百度经验 http://jingyan.baidu.com/article/9faa7231a922c1473c28cb23.html 1.验证安装是否成 ...
- POJ1035——Spell checker(字符串处理)
Spell checker DescriptionYou, as a member of a development team for a new spell checking program, ar ...
- CodeForces152C——Pocket Book(排列组合问题)
Pocket Book DescriptionOne day little Vasya found mom's pocket book. The book had n names of her fri ...
- P38、面试题3:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 首先选取数组中右上角的数字 ...
- (从终端看linux-1)linux tty pty pts 概念 区别
基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东 ...
- CentOS 命令随笔
linux下敲命令时:快速删除当前行已经敲的命令: CTR+U 或者 CTR+/ 快速删除当前行刚输入接近鼠标当前位置的单词:CTR+W 以上在XS ...
- Nandflash 驱动移植
前段时间,研究了一下4G的Nandflash驱动.手头上只有飞凌6410BSP自带的Nandflash驱动,该驱动不支持K9GAG08U0D(2G)和K9LBG08U0D(4G)的Nandflash. ...