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#基础系列——一场风花雪月的邂逅:接口和抽象类 前言:最近一个认识的朋友准备转行做编程,看他自己 ...
 
随机推荐
- movzbl和movsbl
			
汇编语言中最最常用的指令 -- 数据传送指令,也是我们接触的第一种类别的汇编指令.其指令的格式为:“mov 源操作数, 目的操作数”.mov系列支持从最小一个字节到最大双字的访问与传送.其中movb用 ...
 - 【HDOJ】2388 Playground Hideout
			
优先级队列直接AC. /* 2388 */ #include <iostream> #include <sstream> #include <string> #in ...
 - the field is sometimes used inside synchronized block and sometimes used without synchronization
			
http://stackoverflow.com/questions/28715625/is-it-safe-to-use-field-inside-and-outside-synchronized- ...
 - python中os模块path.abspath()返回的并不是绝对值,而是个错误的不存在的拼接地址
			
附截图: 当前路径: a=r'D:\PCsync\python\commands' 为绝对路径 遍历出来的4条应该是D:\PCsync\python\commands\commands.py... ...
 - HTML5学习(十)---Web Workers
			
参考教程:http://www.w3school.com.cn/html5/html_5_webworkers.asp web worker 是运行在后台的 JavaScript,不会影响页面的性能. ...
 - poj 3026 Borg Maze (最小生成树+bfs)
			
有几个错误,调试了几个小时,样例过后 1Y. 题目:http://poj.org/problem?id=3026 题意:就是让求A们和S的最小生成树 先用bfs找每两点的距离,再建树.没剪枝 63MS ...
 - Innodb MVCC源码实现
			
1. 概述 MVCC: 即多版本一致性,在事务模型下,使用version控制数据版本,关系型数据库基本都实现了MVCC,以对表数据的读写互不阻塞,增大了并发量. Oracle和MySQL数据库都是使用 ...
 - echarts-noDataLoadingOption问题
			
目前echarts暂时不支持noDataLoadingOption外挂,所以我为此diy了一个无数据展示文字. 但是echarts很奇怪,它是判断serises==[]空数组才会自动出现echarts ...
 - NOI2010能量采集(数论)
			
没想到NOI竟然还有这种数学题,看来要好好学数论了…… 网上的题解: 完整的结题报告: 首先我们需要知道一个知识,对于坐标系第一象限任意的整点(即横纵坐标均为整数的点)p(n,m),其与原点o(0,0 ...
 - set xact_abort 用法
			
默认行为 默认为SET XACT_ABORT OFF,没有事务行为. SET XACT_ABORT ON SET XACT_ABORT ON分为两种: 1.总体作为一个事务,整体提交或整体回滚,格式为 ...