随笔分类 -  C#

访问修饰符
摘要:/*访问修饰符:private:私有的,只能内部访问protected:只有派生的类型才能访问protected internal:派生类和包含它的程序集中访问internal:包含它的程序集中能访问(默认的)public:任何地方都能访问类只能是public和internal*/namespace Frank{ public class Test { public static void Main(string[] args) { } } internal class Test2 { }} 阅读全文

posted @ 2013-11-21 15:30 wp456 阅读(127) 评论(0) 推荐(0)

密封类sealed和密封方法
摘要:/*密封类sealed和密封方法密封类不能被继承,例如string类就是一个密封类,密封方法不能被改写,但是一般不要定义密封方法,如果不想要被重写,不要定位为虚方法即可。*/namespace Frank{ public class Test { public static void Main(string[] args) { } } public class Test3 { public virtual int Age{get;set;}//定义一个虚属性 public virtual void Get(){}//定义一个虚方法... 阅读全文

posted @ 2013-11-21 14:47 wp456 阅读(306) 评论(0) 推荐(0)

抽象类和抽象方法
摘要:/*抽象类和抽象方法*/namespace Frank{ public class Test { public static void Main(string[] args) { } } /// ///定义一个抽象类 ///抽象方法不能被实现,继承的必须实现抽象方法 ///抽象方法可以定义已经实现的 /// public abstract class Test2 { public abstract void Get();//定义一个抽象方法,抽象方法不能有实现。必须在抽象类里面。 public void Set() { ... 阅读全文

posted @ 2013-11-21 14:39 wp456 阅读(154) 评论(0) 推荐(0)

继承、虚方法、重写。隐藏方法,调用父类的方法和父类的构造函数
摘要:/*继承、虚方法、重写。隐藏方法,调用父类的方法和父类的构造函数*/namespace Frank{ public class Test { public static void Main(string[] args) { Test3 t = new Test3(); t.Set(); t.Get(); } } public class Test2 { public void Set() { System.Console.WriteLine("父类"); } public virtual void Get() { ... 阅读全文

posted @ 2013-11-21 14:33 wp456 阅读(374) 评论(0) 推荐(0)

扩展方法
摘要:/*扩展方法,如果一个需要更改一个类如果有源码那就用继承给对象添加功能。如果没有源码,那就用扩展方法给对象添加功能。添加扩展方法必须是非泛型的静态类中定义,而且必须是静态方法。*/namespace Frank{ public class Test { public static void Main(string[] args) { Extension e = new Extension(); e.Add(1); } } public static class AddExtension { public static void... 阅读全文

posted @ 2013-11-19 16:37 wp456 阅读(168) 评论(0) 推荐(0)

静态类、静态方法、静态构造函数
摘要:/*静态类、静态方法、静态构造函数静态构造函数由CLR调用,在类第一次实例化的时候调用。而且最多调用一次。不能有参数,有参数也没有意义,因为C#代码无法调用静态构造函数。访问修饰符也没有意义。*/namespace Frank{ public class Test { public static void Main(string[] args) { Test2.Get(); } } public static class Test2 { static Test2() { } static void Get() { ... 阅读全文

posted @ 2013-11-19 16:20 wp456 阅读(273) 评论(0) 推荐(0)

部分类 partial
摘要:/*部分类 partial允许把同一个类的不同部分放在不同的文件里面。不能有相同的成员。访问级别必须相同*/namespace Frank{ public partial class Test { public static void Main(string[] args) { } } public partial class Test { public int Age{get;set;} }} 阅读全文

posted @ 2013-11-19 16:01 wp456 阅读(167) 评论(0) 推荐(0)

结构体
摘要:/*结构体 轻型数据体字段成员不能赋值为直接量。结构体跟类不同的是在使用new关键字的时候并不会再堆中分配内存,只是调用构造函数。即使不对结构体进行初始化也能用。结构体不能覆盖系统分配的无惨构造函数。结构体是按值传递,所以在方法内部修改结构体内部的字段并不会对原有的结构体字段改变,除非使用ref关键字。结构体并不支持继承但可以实现接口,但是所有的结构体都继承System.ValueType,ValueType又继承了Object。*/namespace Frank{ public class Test { public static void Main(string[] a... 阅读全文

posted @ 2013-11-19 15:52 wp456 阅读(159) 评论(0) 推荐(0)

C#匿名类型
摘要:var doctor = new {FN="1"}; 编译器自动推断类型System.Console.WriteLine(doctor.FN); 不要用新对象上的任何反射类型,因为这会得到不一样的结果。 阅读全文

posted @ 2013-11-19 15:19 wp456 阅读(80) 评论(0) 推荐(0)

out和ref
摘要:/*out和refref 按引用传递,一般用于结构体类型和string类型,引用类型不需要ref也能修改里面的值。使用前必须初始化变量out 输出参数,使用前可以不需要初始化参数。但离开方法体的时候必须对变量进行赋值。*/namespace Frank{ public class Test { public static void Main(string[] args) { int i = 20; Get(ref i); System.Console.WriteLine(i);//输出10 string str = "2"; Get(ref... 阅读全文

posted @ 2013-11-19 14:08 wp456 阅读(154) 评论(0) 推荐(0)

C#规范简单介绍
摘要:/*C#规范不能以关键字作为变量名字,如果非要用,需要加上@前缀例如:int @int = 5;私有的成员字段通常前面用下划线开头给方法传递的参数一般前面小写开头,每个单词前面大写私有成员及参数名字应使用camel表示法,类、名称空间、公共及受保护的成员用Pascal表示法*/namespace Frank{ public class Test { public static void Main(string[] args) { //int _I = 5; //int \u005fI = 5;//\u005f是下划线_的unicode码,所以不能定义两... 阅读全文

posted @ 2013-11-18 16:33 wp456 阅读(126) 评论(0) 推荐(0)

C#预处理指令的使用及理解
摘要:#define DEBUG //定义//#undef DEBUG//销毁定义的/*C#预处理指令必须定义在源文件代码的开始C#预处理指令用于版本控制,例如测试版本和正式版本的功能限制。编译器会根据实际逻辑去编译代码。*/namespace Frank{ public class Test { #pragma warning disable 169 //禁用编译指示警告信息 int age;//编译指示警告“从不使用字段”将不会显示出来 #pragma warning restore 169//恢复编译指示警告信息 int age2;//显示出编译指示警告 publi... 阅读全文

posted @ 2013-11-18 15:26 wp456 阅读(252) 评论(0) 推荐(0)

注释的使用
摘要:/*注释的使用*/namespace Frank{ /// /// 测试类 /// public class Test { /// /// 程序入口点 ///输入参数 /// public static void Main(string[] args) { //单行注释 /* 多行注释 */ } /// /// XML文档注释 ///无返回值 /// /// public void Get(int x) { } }}/* 生成XML文档:csc /doc:Test.xml Test.cs 打开生... 阅读全文

posted @ 2013-11-18 14:14 wp456 阅读(138) 评论(0) 推荐(0)

控制台I/O
摘要:/*控制台I/O在System下面有个Console类里面提供了几个实用的静态方法Console.Write()输出到控制台Console.WriteLine()输出到控制台后输出一个换行符WiteLine方法还支持格式化输出。*/namespace Frank{ public class Test { public static void Main(string[] args) { //简单的格式化输出 System.Console.WriteLine("{0} plus {1} equlas {2}",1,2,1+2);//输出:1 plus 2 ... 阅读全文

posted @ 2013-11-18 13:39 wp456 阅读(204) 评论(0) 推荐(0)

一个源文件引用另外一个文件的类库
摘要:namespace Frank2{ public class Test { public void Print() { System.Console.WriteLine(this.GetType().Namespace); } }} csc /t:library Test2.cs //输出一个单文件程序集using System;using F2 = Frank2;namespace Frank{ public class Test { public int Age{get;set;} public static void Main(string[] args... 阅读全文

posted @ 2013-11-18 11:41 wp456 阅读(249) 评论(0) 推荐(0)

csc编译输出类型
摘要:利用csc.exe编译工具我们可以输出自己想要的类型。默认的是输出exe文件。例如: csc /t:exe Test.cs 输出一个exe文件 csc /t:library Test.cs 输出一个带清单的dll文件类库 csc /t:module Test.cs 输出一个没有清单的组件(模块)文件。 csc /t:winexe Test.cs 输出Windows应用程序(没有控制台窗口)程序集,模块,类库的定义。程序集分为提供功能的dll或者带Main方法入口的exe文件。一个程序集里面可以包含模块,和类库。程序集里面有一个文件用于保存清单。(清单是元数据部分中一组数据表的集合,其中... 阅读全文

posted @ 2013-11-18 11:28 wp456 阅读(267) 评论(0) 推荐(0)

Main方法
摘要:/*Main方法Main是程序的开始,必须定义为void或者int类型的静态方法,不过Main方法的访问级别不重要,即使定义的private也是可以执行的。如果多个类中都有静态的Main方法,那么就会出现编译错误。这时候需要指定运行哪个类中的Main方法。指定需要运行的Main方法csc Test.cs /main:Frank.Test个Main方法输入参数Test.exe 1 2 3*/using System;namespace Frank{ public class Test { public static void Main(string[] args) ... 阅读全文

posted @ 2013-11-18 10:52 wp456 阅读(183) 评论(0) 推荐(0)

命名空间及别名的使用
摘要:/*命名空间及别名的使用*/using System;using FB = Frank.Base;namespace Frank{ public class Test { public static void Main(string[] args) { FB::Test t = new FB::Test();//或者FB.Test t.GetNamespace(); } }}namespace Frank.Base{ public class Test { public void GetNamespace() ... 阅读全文

posted @ 2013-11-18 10:29 wp456 阅读(207) 评论(0) 推荐(0)

C# enum枚举的定义
摘要:using System;/*枚举enum 结构体,一旦编译好枚举就会成为基本类型,所以不会造成性能损失。优势: 代码更容易维护,有助于给变量合法、期望的值。 使代码更加清晰,允许用描述性的名称表示整数值,而不是模糊、变化多段的数来表示。*/namespace Frank{ public class Test { public static void Main(string[] args) { Frank.Test t = new Frank.Test(); t.GetTimeStr(TimeOfDay.Morning);//根据用户输入的枚举值得到对应的时段 System.C... 阅读全文

posted @ 2013-11-07 22:44 wp456 阅读(444) 评论(0) 推荐(0)

break,continue,return语句的介绍
摘要:break用于终止循环体或者switch体。continue用于终止当前循环,进入下一次循环。return返回到方法体外面。 阅读全文

posted @ 2013-11-07 22:30 wp456 阅读(136) 评论(0) 推荐(0)

导航