
C#基础篇
文章平均质量分 58
$扫地僧$
这个作者很懒,什么都没留下…
展开
-
unsafe关键字
unsafe开启对不安全代码的支持(及可以像c\c++ 那样使用指针)示例Demo:namespace ConsoleApplication{ public struct MyStruct { public int a; public int b; } class Program { stat原创 2015-11-20 10:04:20 · 353 阅读 · 0 评论 -
异常处理 Exception
一、异常类1、在C#中所有的异常都是使用一个异常类型的示例对象表示的,这些异常类型都是继承自System.Exception类型,或者直接使用System.Exception类型的实例对象;2、在C#中,位于finally块中的代码可以保证不管代码是正常结束,还是进入异常处理代码块,其中的语句均会被执行。namespace AllDemo{ class Pro转载 2015-11-20 11:02:05 · 330 阅读 · 0 评论 -
扩展方法
扩展方法可以理解为现有的类型(现有类型可以为自定义的类型和.Net 类库中的类型)扩展(添加)应该附加到该类型中的方法。在没有扩展方法之前,如果我们想为一个已有类型自定义自己逻辑的方法时,我们必须自定义一个新的类型来继承已有类型的方式来添加方法扩展方法必须具备下面的规则:它必须在一个非嵌套、非泛型的静态类中它至少要有一个参数第一个参数必须加上this关键字作转载 2015-11-20 15:33:36 · 262 阅读 · 0 评论 -
C#获取变量默认值
/// /// 获取变量默认值 /// /// /// private object DefaultForType(Type targetType) { return targetType.IsValueType ? Activator.CreateInstance(ta原创 2015-11-20 15:52:05 · 452 阅读 · 0 评论 -
C#中的Action<>和Func<>和Predicate
其实他们都是委托【代理】的简写形式。一、【actionnamespace EventDemo{ class Program { public delegate void myDelegate(string str); public static void HellowChinese(string strChinese)转载 2015-11-20 11:24:34 · 403 阅读 · 0 评论 -
C#关键字的使用(params、explicit、implicit、operator)
params object[] 用于函数多参数的定义namespace AllDemo{ public class Program { static void Main(string[] args) { int count1 = Plus(1); //输出 1 Console.Writ原创 2015-11-20 15:44:16 · 396 阅读 · 0 评论 -
对象复制
定义对象 public class RefPoint { // 定义一个引用类型 public int x; public RefPoint(int x) { this.x = x; } } public struct ValPoint { // 定义一原创 2015-11-20 10:37:10 · 234 阅读 · 0 评论 -
.net中对象序列化技术浅谈
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之,反序列化根据流重新构造对象。此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件中“恢复”对象到序列化之前的状态。在.net中有提供转载 2015-11-20 16:20:37 · 286 阅读 · 0 评论 -
is和as
is的规则如下:检查对象类型的兼容性,并返回结果,true或者false;不会抛出异常;如果对象为null,则返回值永远为false。其典型用法为:object o = new object();class A{}if (o is A) //执行第一次类型兼容检查{ A a = (A) o; //执行第二次类型兼容检查}as的规则如下:检查对象类转载 2015-11-20 11:32:42 · 304 阅读 · 0 评论 -
C# 迭代器
一、迭代器的介绍 迭代器大家可以想象成数据库的游标,即一个集合中的某个位置,C# 1.0中使用foreach语句实现了访问迭代器的内置支持,使用foreach使我们遍历集合更加容易(比使用for语句更加方便,并且也更加容易理解),foreach被编译后会调用GetEnumerator来返回一个迭代器,也就是一个集合中的初始位置(foreach其实也相当于是一个语法糖,把复杂的生成代码工转载 2015-11-20 15:55:04 · 295 阅读 · 0 评论 -
预处理指令关键字
#if、#else、#elif、#endif这组指令主要用于在调试环境下代码进行条件编译时,用于控制编译器对某个代码段是否进行编译。#define releaseusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Linq.Expression原创 2015-11-20 10:18:23 · 468 阅读 · 0 评论 -
using的三种用法
1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间例如:using System; 一般都会出现在*.cs中。2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。using转载 2015-11-20 11:06:39 · 1330 阅读 · 0 评论 -
位操作
位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如C、C++和Java等,C#也不例外支持位操作。注意位操作支持的数据类型是基本数据类型,如byte、short、char、int、long等,C#支持的位操作有如下几种:· 按位与 & · 按位或 | · 按位取反 ~ · 左移 · 右移 >>· 异或^在C#中位操作同C的位操作没有什转载 2015-11-20 11:16:58 · 337 阅读 · 0 评论 -
C# typeof() 和 GetType()的区别
1、typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称。2、GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。比如有这样一个变量i:Int32 i = new Int32();i.GetType()返回值是Int32的类型,但是无法使用type转载 2015-11-20 11:28:31 · 244 阅读 · 0 评论 -
C# 索引器
索引器类似于属性。和属性相似,索引器一样有get和set访问器。索引器与属性的不同点: 1、每个属性的名称必须唯一,而每一个索引器的签名必须唯一。 2、索引器的“属性名”统一为this。而不能为其他,专门用于定义索引器。 3、索引器的参数列表包含在方括号而不是圆括号之内。 4、属性可以是静态的,而索引器只能为实例成员。 5、属性的get访问转载 2015-11-20 15:50:53 · 360 阅读 · 0 评论 -
常用正则表达式
c#如何使用正则表达式引用命名空间using System.Text.RegularExpressions; string valEx = @"^\d+$"; string val = "sdafsdfsdfsd"; if (!Regex.IsMatch(val, valEx)) {原创 2015-11-20 16:28:02 · 326 阅读 · 0 评论 -
分部类,分部方法 - 修饰符partial
一、分部类简单来说就是将一个类型或方法拆分到两个或多个源文件中,每个源文件只包含类型定义的一部分。1、分部类的特征类的定义前要加partial。分部类可以定义在两个不同的.cs文件,也可以定义在同一个.cs文件中。分部类必须同属一个命名空间。代码示例namespace ConsoleApplication{ class Program {转载 2015-11-20 15:13:12 · 806 阅读 · 0 评论 -
父子类,实例、静态成员变量,构造函数的执行顺序
父子类,实例、静态成员变量,构造函数的执行顺序1子类静态成员变量 2子类静态构造函数 3子类实例成员变量 4父类静态成员变量 5父类静态构造函数 6父类实例成员变量 7父类构造函数 8子类构造函数 看来除了构造函数,子类全部比父类先执行,其顺序是静态先于实例,变量先于函数。然后子父类实例函数都是最后执行。namespace ConsoleApplic转载 2015-11-20 15:19:36 · 300 阅读 · 0 评论 -
匿名方法
一、概念:namespace EventDemo{ class Program { // 定义投票委托 delegate void VoteDelegate(string name); static void Main(string[] args) { // 实例化委托对象转载 2015-11-20 16:36:05 · 346 阅读 · 0 评论