.net

来源:互联网 发布:美容店 管理软件 知乎 编辑:程序博客网 时间:2024/04/29 23:28

 

 

 

 

VB6.0和VB.Net函数对照表

VB.NET函数表

 

vb vb vb vb vb vb vb vb vb vb

对象浏览器 查看 系统内部常量

Form1.BackColor = vbBlue

Form1.BackColor = qbcolor(0)

vbkeyup        vbkeydown        vbkeyleft vbkeyright        分别表示键盘上下左右的键代码

自定义常量        const pi = 3.14

变量        dim qq  as string                相当于        dim qq$

隐式声明变量        不用dim 直接用i=i+1

 

 

冒号 把两行代码连成一行

空格加下划线 把一行代码分成两行

 

算术运算符

- 取负

& 连接

关系运算符:

LIke 比较样式

IS 比较对象变量

逻辑运算符:

Not(1>4)

and or

xor 异或

eqv 等价

imp 蕴含

 

输入输出:

print "你好" 相当于 form1.print "你好"        在窗体上输出

picture1.print ""        在图片框上输出

debug.print ""         在立即窗口中输出

printer.print ""                用打印机输出

 

单是一个print 就是输出一个空行

print a,b        中间的分隔大点

print a;b       

print a:tab(8):b                tab(8)表示8个空                Spc(8) 表示8个空格

Space$(5)        可用在字符串中,表示5个空格

格式说明符

Format$(字符串,格式)        str$()作用差不多               

print format$(99,"0000")        输出四位数

print format$(12.567,"#.###")        输出12.57

print format$(12.567,"000.0000")        输出012.567

print format$(12345,"#,#")        输出12,345

print format$(12345.123,"#,#.##")        输出12,345.12

print format$(12345,"000000,0")        输出0,012,345

print format$(12.567,"$000.0000")        输出$012.567

cls         清除窗体文字

move 2000,2500,2600,2300

currentX = 200

currentY        = 300

print ""

 

dim a as string

a = "fdd"

currentX = (scalewidth - textwidth(a))/2

currentY = (scalewidth - textheight(a))/2

print a

 

dim a as string

a = inputbox("请输入你的姓名","提示","你好",3000,5000)

print "你的姓名是:"& a

 

biaoti$ = "学生信息登记"

b$ = inputbox("请输入姓名",biaoti)

 

msgbox "欢迎"&chr$(12)

msgbox "欢迎"&vbcrlf                功能一样

 

dim a as string

a = msgbox ("你确定要退出程序吗",1+32)                '这里的1用来显示一个“确定”及“取消”按钮,32用来显示系统问题图标

if a = 1 then

end

else

print "你没有退出本程序"

end if

 

text1.fontbold = not text1.fontbold                '取反操作

 

form.show                'me.show

text1.setfocus

 

for next 循环:

dim i as integer

for i = 1 to 10

print i

next  i

 

当循环:

while a <> ...

...

wend

 

do循环:'while until 可放在loop后面

do while  条件

...

loop

do until 条件

...

loop

 

出口语句

private sub form_click()

dim i,num

do

for i = 1 to 10

num = int(rnd*10)

print num

select case num

case 5:exit for

case 8:exit do

case 9:exit sub

end select

next i

print "exit for"

loop

print "exit do"

end sub

 

goto语句        on goto语句

100

...

if .. then goto 100

 

 

vb数组

Option   Base  1                        指定数组的下标是从开始的

dim a() as string                 动态数组

dim b(1,2) as integer

dim y(1949 to 2007)        可以用来表示1994年到2007年

dim a%(10),b!(2 to 5) ,c#(8)

定义了整型(%)、单精度(!)、双精度(#)3种类型的数组

 

dim a(5,10 to 20,-2 to 8)

print lbound(a,1),ubound(a,1)        'lbound返回某一维的下界值,ubound返回某一维的上界值

 

redim a(3) as string

redim preserve  a(3) as string        重新定义此数组后,不会清除原来的值

redim 的是临时数组,过程结束后会释放

 

erase 数组名                数组清除

 

for each .. in  .next .

dim a(1 to 5)

for each x in a

print x

next x

 

a = array("2121","2121","2122","2122123")

 

 

vb.net vb.net vb.net vb.net vb.net

Me.BackColor = Color.SteelBlue

 

 

C# C# C# C# C# C# C# C# C# C#

变量区分大小写

变量要先声明才能赋值,才能用,引用等

string aa="ddd",bb="eee",cc="dfdfd";

 

VAR 是3.5新出的一个定义变量的类型

VAR可代替任何类型

必须在定义时初始化。也就是必须是var s = “abcd”形式

var要求是局部变量

一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。

使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

 

 

 

 

 

 

 

C#效率 总结:

测试时间:         DEMO

遍历         :         foreach(  in  )    GetEnumerator  Library 也可以用 迭代器 yield

数组参数 params

枚举 enum  枚举是用来声明一个命名常量的值类型

System.Enum→System.ValueType→System.Object [W1]         DEMO 

多个枚举成员可以共享一个关联值demo

枚举转换        DEMO        DEMO1               

同时使用结构与枚举 DEMO [W2]

结构 struct  结构与枚举可以实现接口,不可以继承  System.ValueType →System.Object

结构是值类型 具有值语义         由于是值类型,所以开销小,效率高         DEMO

而类是引用类型 具有引用语义

1.   结构主要用于组织数据

2.   结构不支持继承但支持接口

3.   结构实例的默认值不是null,而具有默认的初始值  因为不是引用类型

4.   在结构和类中,this的意义不同

5.   实例字段声明中不能含有变量初始值设定项

6.   不能声明无参数的实例构造函数

 

 

泛型  (更高的存储效率) [W3]

DEMO         DEMO2         DEMO3        

泛型约束         where         DEMO

泛型集合类         DEMO

自定义泛型集合类        

泛型迭代器                 

静态类/成员/方法  (不能被实例化,也不能派生子类,不能继承,默认是object)[W4]

索引器         DEMO         重载索引器         DEMO

集合 数组是最基本最常用的集合 System.Collection.ICollection是基类

都要实现System.Collection.IEnumerable接口,实殃这接口的类能一一列举集合类所包含的数据

1.            数组的方法和属性         GetEnumerator                Copy       

2.            CreateInstance方法        

3.            数组转换                  DEMO

常见的集合类:        

ArrayList        ArrayList2

Hashtable  Hashtable2 

Queue         先进先出

SortedList

Stack                  后进先出

foreach         DictionaryEntry

自定义集合类:         Library         迭代器的Livrary

迭代器:                  DEMO         DEMO2

字符串与正则表达式

 

委托/事件/匿名方法  System.MulticastDelegateSystem.Delegate

 

Delegate 委托 C#  DEMO                DEMO 2  也可以用匿名方法 DEMO

委托代理动态方法:  DEMO 

事件:        DEMO                DEMO2    delegate  event

 

 

隐式类型 var

可空类型 (空合并运算符)

 

 

重载

隐藏 new

重写 virtual   override  [W5]

 

阻止实例化 (私有构造函数) (静态类) [W6]

阻止继承 类 sealed

阻止重写 方法 sealed override public void F() //密封并重写,就是只能用于对基类的虚方法进行重写

 

 

类的无参构造器 会先调用 基类的无参构造器 所以 最好写上无参构造器 良好的习惯

 

静态构造器  static A() { }

一般用于对静态数据的初始化

Class A { public  static  int  i = 90; }  //会自动生出一个静态构造器

Class A { public  static  int  i ; }  //不会生成静态构造器

静态构造器 只能在基类中  被调用一次

 

 

静态构造函数是不可继承的,而且不能被直接调用。
类的静态构造函数在给定应用程序域中至多执行一次。
应用程序域中第一次发生以下事件时将触发静态构造函数的执行:
1。创建类的实例。
2。引用类的任何静态成员。

 


那么在程序中如何可以利用静态 字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以 方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副 本。看如下代码

 

 enum Color

{

  Red,                 //被自动赋予0值

  Green = 10'        //

  Blue        //被自动赋值比上面的大                //1的值,即11

}

 枚举类型的变量在某一时刻只能 取枚举中某一人元素的值

 泛型主要有以下几个优点:
1.性能高:定义数据类型,不需要类型转换,避免拆装箱带来的性能损失;
2.类型安全:定义允许使用的数据类型,在编译时检查类型错误,及早发现错误。

 静态的 存储效率高

 c#中,继承、虚方法、重写组合在一起才能实现多态性

也可以通过对属性、索引器、和事件使用vistual和override来产生多态性

 静态类不包含sealed或abstract,只能包含静态成员(常量和嵌套类型被看成是静态成员) 不能包含构造函数

php没有静态类,有静态方法

java也没有

 

 

 

 

 

 

 

Checked()
As运算符
Is运算符  
Sizeof
重载运算符  public static BooleanInt operator +(BooleanInt bi) 可以在实例中调用重载后的方法
重载一元运算符    重载二元运算符    重载转换运算符

 AS  IS  用法:
B b = new B();
//不用as,进行强制转换,如果类型不匹配,会引发转换异常
A a = (A) b;
//使用as,类型不匹配,不会引发异常,会返回一个null,此时 a = null
A a = b as A;


is  检查对象是否与给定类型兼容。例如,以下代码可以确定对象是否与 string 类型兼容:
is 是里氏替换原则的一种算法:子类即是父类
if(ClassA is ClassB)
   等式成立返回真 否则返回假!
如果ClassA与ClassB有继承关系并且ClassA是ClassB的子类
那么为真
否则为假!

 

GetType
Typeof

 

一个是语句一个是object的方法,typeof是语句,根据类名来得到Type对象,而getType是个方法,是对象的方法  
    
   Type   t   =   typeof(String);  
    
   String   s="";  
   Type   t   =   s.GetType()

 

 

checked        用于对整型算术运算和转换显式启用溢出检查
unchecked        用于取消整型算术运算和转换的溢出检查

 

 

 

一元加减运算符

Double.db1 = 3.14;

Double db2 = +db1;         //3.14

Double db3 = -db1;         //-3.14

 

空合并运算符

int? i = 123;

int? j = 456;

int? k = null;

int? nil = j??i;                  //j

int? nil2 = k??i;         //i

int  i1 = k??i;                  //错,需显式

int  i2 = k??2;                  //2

object o1 = new object();

object o2 = null;

object no1 = o1??"string";         //o1

object no2 = o2??o1;                  //o1

 

 

内部类:在编译单元或命名空间内声明的类称为顶级类 [W1] 实现在类A的内部对类B的访问

分部类和方法:partial        

 

方法参数:

值参数

引用参数        ref

输出参数        out       

参数数组        params        string[]和string[][]可用,但string[ , ]不可用

 

 

this   this.y = y;

base访问:适合非虚方法   用于从派生类中访问基类的成员

base.标识符

base[标识符]

int x = base[0];                //((A)this).[0]

base.F();                        //((A)this).F();

 

base用于构造函数声明:

class B:A

{

public B(int n ):base(0)

{

 

}

}                  //在执行B类的构造函数之前会先执行A类的构造函数A(int  n)

 

This不能用在静态构造函数和静态函数成员中

This用于构造函数声明:(这个构造函数会在执行正在声明的构造函数之前执行)  DEMO

 

 

显式接口成员:

DEMO

 

readonly 关键字与 const 关键字不同。
1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null。
readonly可以是任何类型

Readonly可在构造函数内多数赋值

 

 

System.Object提供了一些虚方法,所有的类都可以重写他们

Equals;                           确定两个对象是否等价         内容是否相等                 

GetHashCode                 

GetType

ToString

Finalize                          

MemberwiseClone()         创建对象的拷贝,而定义的类不应该重写此方法

ReferenceEquals                  确定两对象是否引用同一实例

要同时重写         Equal()和GetHashCode()

 

 

 

特性:               

使用预定义(Pre-defined)特性         Obsolete DEMO[W2]                AttributeUsage[W3] DEMO02

开发定制特性(custom attributes)         DEMO

 

 

 

程序集:

程序集是.net框架应用程序的构造块,程序集构成了部署、版本控制、重复使用、激活控制范围和安全权限的基本单元。

把s1.cs s2.cs s3.cs三个源文件编译成一个应用程序

csc /out : simulator.exe s1.cs s2.cs s3.cs

 

元数据与清单

强名称与共享

版本控制

程序集与应用程序域  DEMO

 

反射:

System.Type类为System.Reflection功能 的基础,也是访问程序集的元数据的主要方式。        DEMO

动态加载类型        DEMO

 

 

与非托管代码的互操作编程:

COM组件

ActiveX控件

 

线程操作:  多线程

DEMO                        ThreadStart

如果在创建线程时使用ParameterizedThreadStart委托,就能在启动线程时,将包含的数据的对象传递给Thread.Start(Object)方法,并从线程启动的方法中接受此数据,这是一种向线程传递数据的简单方法,如DMEO                ParameterizedThreadStart

使用ParameterizedThreadStart委托来向线程传递参数时,由于可以将任何对象传递给Thread.Start(object),因此这种方法并不是类型安全的。将数据传递给线程过程的一个更可靠的方法是将线程过程和数据字段都封装在一个辅助类中,并使用ThreadStart委托来执行线程过程。        DMEO

由于ParameterizedThreadStart和ThreadStart委托都没有返回值,因此不能直接从异步调用中返回数据。以下演示一个从线程中检索数据的回调方法 DEMO

匿名方法非常适合于线程方法较简单的情形  DEMO 

 

线程优先级:        DEMO

线程的优先级可以定义为ThreadPriority枚举的值,即Highest、AboveNormal、Normal、BelowNormal和 Lowest。

阻塞和中断线程:DEMO

终止线程:                DEMO

 

 

 

 

使用Server.Transfer("URL"); //性能比Redirect高,具有允许目标页从源页中读取控件值和公共属性值,由于调用这方法后,浏览器不会反应更改后的浏览器信息,因此它也适合以隐藏URL的形式向用户呈现页面,如果用户按后退或剧新有可能导致意外情况

 

避免不必要的服务器往返

if(!Page.IsPostBack)     //当是第一次加载时

 

 

尽早释放对象

很多类实现了IDisposable接口,都会有一个Dispose方法

 

尽量减少服务器控件的使用

 

 

 

 

 

 

 

 

 

GDI 图形图像编程:

System.Drawing.Point结构用于表示一个二维平面中的点

Point pt = new Point(100,50);

System.Drawing.Size结构用于存储一个表示大小有序整数对,通常为矩形的宽度和高度

Size size = new Size(5,8);

System.Drawing.Rectangle结构用于存储一个整数四元组。表示一个矩形的位置和大小。如果要表示浮点数的位置和大小,可以使用RectangleF.

Rectangle rect1 = new Rectangle(100,50,5,8);

Point pt = new Point(100,5);

Size size = new Size(5,8);

Rectangle rect2 = new Rectangle(pt,size);

 

 

绘图工具:

GDI+定义了绘图用的一系列工具,将它们与Graphics对象一起使用,实现绘制线条和形状,主要工具如 下:

Color结构        [W4]

Pen类                Pen solidPen = new Pen(Color.Black,8);

Brush类                SolidBrush qq = new SolidBrush(Color.FromArgb(200,0,0,25))

 

Paint事件

 

绘图:

直线和矩形        DEMO

椭圆和弧线        DEMO

多边形                DEMO

样条曲线        DEMO  DEMO2

实心图形        DEMO       

LinearGradientBrush  使用线性渐变绘制区域。

 

字体和文本:

DEMO

DEMO

DMEO3

 

图像操作:        System.Drawing.Bitmap

1像素可表示的颜色数量 21

2像素可表示的颜色数量 22

24像素可表示的颜色数量 224

图像显示:        DrawImage   PictureBox控件

在图像中绘制图形、图像和文本         DEMO

变换:

坐标变换        DEMO

颜色变换       

 

 

打印:        PrintDocument组件

System.Drawing.Printing

PrintDocment  PrintDialog  PrintPreviewDialog  PageSetupDialog

增加核心打印功能        DEMO

增加页面设置功能        DEMO

 

 

 

 

显式数据类型转换

C#

[W5]Convert.ToInt16(TextBox7.Text.ToString()

f.ToString()  //float->string [W6]

int.Parse(str)  //string->int

char[] chars = str.ToCharArray();//string->char[]

byte[] b1 = System.Text.Encoding.Default.GetBytes(s);//sting->byte[],半个英文1个字节,汉字2 个字节。

double doubleDate = DateTime.Now.ToOADate();//按原来的double值输出,DateTime->long

DateTime theDate = DateTime.FromOADate(doubleDate);//从原来的的double值获得System.DateTime对象,long->DateTime

Java

调用类的串转换方法:X.toString();

使用String的方法:String.volueOf(X);

转换double型的值的格式为:new Float(“32.1”).doubleValue() [W7]

静态parseXXX方法 [W8]

 

String.valueOf()

Integer.parseInt()

Float.parseFloat()

 

Php

使用3个具体类型的转换函数,intval()、floatval()、strval() [W9]

使用通用类型转换函数settype(mixed var,string type)[W10]

 

javascript

var string = number.toString();   //number被转换成Number对象,再调用Number.toString()方法 [W11]

方法toFixed()将把数字转换成字符串,并显示小数点后指定的位数。[W12]

parseInt()和parseFloat() [W13]

Sql server

CAST [W14]

CONVERT [W15]

Mysql

CAST(expr AS type),  

CONVERT(expr,type),  

CONVERT(expr   USING   transcoding_name)

 

 

日期类型

C#

不存在向char类型的隐式转换

DateTime dcsrq = new DateTime(2006,3,10);//定义一个日期

DateTime date1 = dcsrq.AddHours(-36.3669);//将日期减少36小时

.AddMouths(23);    //增加23个月

Java

import java.util.Date;

Date date = new Date();   System.out.println(date.getTime());

 

Php

echo time(); //返回值1162541319,而此时的时间为Fri Nov 3 16:11:52 HKT 2006

echo date ("H/hi l d F", time()); //18h12 Sunday 21 May

echo strftime ("%Hh%M %A %d %b" ,time());

//18h24 Sunday 21 May 前面必须添加一个百分号%

$date_time_array = getdate (time());
echo $date_time_array[ "weekday"];

 

javascript

var Nowdate=new Date(); 

M=Number(Nowdate.getMonth())+1 

Return Nowdate.getYear()+"-"+M+"-"+Nowdate.getDate(); 

DEMO

Sql server

DEMO

Mysql

DEMO

 

C#能够使用三种类型的内存:

堆栈(stack)[W16]        托管堆(managed heap)        非托管堆(unmanaged heap)

 

C#的类型系统是统一的,因此任何类型的值都可以按对象处理

C #中的每个类型都直接或者间接地从object类派生,而object是所有类型的基类

常量也是对象,因此常量也具有它的类型所定义的方法、字段、属性 [W17]

 

引用类型(类、接口、数组、委托)

值类型(简单类型、枚举类型、结构类型)

 

 

 

 

类的成员:

数据成员:

字段 常量

函数成员:

方法  属性  索引器  条件  运算符  构造函数和析构函数

成员访问修饰符:

Public  protected  internal[W18]  protected internal  private

类访问修饰符:

 

 

c#基本数据类型:

字符                  char

逻辑                  bool        

整数                  byte  decimal  int  long  sbyte  short  uint  ulong  ushort 

浮点                  float  double

复杂数据类型:

数组

object

结构  struc

枚举           enum

class和interface

string   [W19]

 

字符串:

规则字符串         " "                 

逐字字符串         @" "                  //不处理转义序列,可以跨多行

 

连接字符串和提取字符串:DEMO

访问各个字符串        DEMO

更改大小写:        s.ToUpper()        s.ToLower()

比较:                        DEMO

搜索:                        s.IndexOf("  ")

将字符串拆分为子字符串:        DEMO

复制:                        DEMO

修改字符串的值:        DEMO

对字符串进行格式化:        DEMO

StringBuilder:        DEMO

 

正则表达式: 正则表达式类

 

DEMO              Regex表示不可变(只读)正则表达式类

DEMO2       Match   [W20]

DEMO3      MatchCollection [W21]

DEMO4        GroupCollection

DEMO5      CaptureCollec

DEMO06        Group     

DEMO07 Capture     

拆分字符串        拆分字符串2

查询字符串        Match Matches IsMatch

替换字符串

 

 

 

 

 

 

[/s/S]        匹配任意字符

若在正则表达式的模式或模式的一部分两侧加上括号,就会导致表达式的一部分被存储到临时缓存区。可以通过?: ?= 或 ?!来重写捕获

*        {0,}               

+        {1,}               

?        {0,1}       

/d        数字字符匹配

/D

/s        任意空白字符

/S

/t        制表符

/w        任何字类字符        [a-zA-Z0-9]

/W        任何非单词字符        [^a-zA-Z0-9]

 

[^#  ]*      匹配不包括#或空格字符的任何字符序列

 

 

bool -> System.Boolean (布尔型,其值为 true 或者 false)
char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)

 

高级数据类型:

可空类型        T类型        (可取空(null)值)

Int ? X;

Int ? Y = null;

         Int ? X = 123; //123被  转换为可空类型int?

与int ? X = new int ? (123); //123被包装到可空类型int?

两个是等价的操作

转义字符:

/0                  null

/a                  警告符号

/b                  退格符        

/f                  换页符

/n                  换行符

/r                  回车符

/t                  水平制表符

/"                 

/'                 

//                 

/u000-uFFFF                  以十六进制指定的16位Unicode字符

 

变量的默认值:

定义了变量必须赋一个初值才能使用。

如果不想定义有意义的值,就String  var_a =  null;

 

常量:         const

 

不存在到char类型的隐式转换

 

装箱和取消装箱: [W1]拆箱

将值类型转换为引用类型的过程         装箱

将引用类型转换为值类型                           取消装箱

 

二维、多维数组:

int[ , , ] intArray;

int[ , ] intArray = new int[4,5];

intArray = new int[ , ]{{1,2},{3,4},{5,6}};

可以这样引用二维数组中的一个元素:int   = intArray[1][2];

 

Int[] arr = {1,2.3};

C#不支持动态数组

 

声明交错数组:

int[ ][ ] = intArray = new int[4][];

这个跟java一样

 

 

如果需要在执行一段代码后自动释放这段代码所占用的资源         用using语句

 

 

 

引用机制:

Valuemethod(int  i)

Valuemethod(ref  int  i)  //引用参数  可以改变han shu外的变量

Valuemethod(out  int  i)         //输出参数  ref差不多 参数在han shu体内必须先进行初始化

 

一个字符保存成System.char结构

字符总是表示为16位的ASC‖符

ASC‖美国标准标准信息码  

int(c)         //得到c的ASC‖码

'/x65'  是十六进制的   (char) 64  用的是十进制

Convent.Tochar(64)         也用十进制 但效率不如上面的

 

 

System.Text.StringBuilder         处理大量字符

 

 

 

析构   一个类只能有一个  自动调用的  不能被重载等  永远是私有的 ~A(){        }

托管堆        

zhan         会自动释放内存  局部变量,

 

垃圾回收机制:         第0代的对象 占256K  第1代占2M 第2代占10M

带有析han shu的类会进行两次垃圾回收才能 清除 一般情况最好不要析构

 

促发析han shu条件:

 

Dispose()方法 阻止 finalize()方法的调用  DEMO

 

 

 

属性:  属性访问器

Private string m_name;

public string Name

          {

                    get

                              {

                                        return Name;

                              }

                    set{

                              if(values=="ÄÐ"||values=="Å®")

                              {

                                        sex = values;

                                       

                              }

                              else

                              {

                                        Console.WriteLine("ÐÔ±ðÖ»ÄÜΪ"ÄÐ"»ò"Å®"");

                             

                              }         

                    }

          }

属性的四个种类:

可读可写

可读

可写

Static属性

 

 

 

静态方法不能标记为 override、virtual 或 abstract,即静态方法都必须是具体的

 

子类继承抽象父类后,可以使用override关键字覆盖父类中的抽象方法,并做具体的实现。也可以不实现抽象方法,留给后代实现,这时子类仍旧是一个抽象类,必须声明为abstract

 

继承的抽象方法不可以被隐藏

 

静态方法可以被隐藏或重载

 

sealed  相当于 java final

密封类不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。

在对基类的虚成员进行重写的派生类上的类成员、方法、字段、属性或事件可以将该成员声明为密封成员。

 

如果没有充分理由,应避免显式实现接口成员。

如果成员只应通过接口调用,则考虑显式实现接口成员。

 

 

 

命名空间:

namaspace N1.N2{}

相当于 namaspace N1{  namaspace N2{  }  }

 

 

递归:

直接递归(在方法体中调用方法本身)

间接递归(A调用B,B中调用了A)

 

B b = new B();                //子类对象

A a = b;                //a 的编译时类型为A 运行时类型是B

 

.net framework事件设计规则:

声明delegate时,使用void类型当作返回值,EventName事件的事件委托是EventNameEventHandler,事件接受两个参数,一律命名为sender e;  DEMO

 

//防止可能存在的线程同步问题

 

 

 

 

 

引发异常  throw new Exception("width的值不能为负");

处理异常        try catch finally

更改异常蛮量 并重新引发异常

 

注意:当一个break、continue、goto语句出现在finally块中时,此语句的目标必须在同  一finally块内,而不能将控制权转移到finally块外部。return语句不能用于finally语句中        

 

公共异常类:

引发溢出异常  OverflowException

内存枯竭时 OutOfMemoryException

当堆栈空间耗尽时 StackOverflowException  在递归程序中最容易导致堆栈溢出

引用空对象时        NullReferenceException

当数组越界操作时 IndexOutOfRangeException

当出现不当显式转换时        InvalidCastException

 

自定义异常信息

 

 

异常处理:

e.ExceptionHandled = true;        //这个属性默认返回false。设为true就告诉.net 已成功地处理了异常,应用程序可以安全地继续执行

 

 

 

 

 

 

Web窗体编程            System.Web.UI 命名空间

Windows窗体编程:            System.Windows.Forms 命名空间

                   //创建my2实例

           my2 qq = new my2();

           //以模式方法显示FirstForm对象

           qq.ShowDialog();   //qq.Show();

 

this.DialogResult = DialogResult .OK;

//窗口模式关闭        

 

Window 类实例化时,默认情况下它是不可见的。ShowDialog 显示窗口,禁用应用程序中的所有其他窗口,并且仅在窗口关闭后才返回。这种类型的窗口称为“模式”窗口。

 

            //显示消息框

           MessageBox.Show("只要关闭这个东西 应用程序才能继续运行");

 

                   //显示一个消息框

           DialogResult dr = MessageBox.Show(

            "可以选择yes、no、或者cancel.你想进行何种操作?",

            "消息框",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question

            );

           if (dr == DialogResult.Yes) this.Text = "你选择了yes";

           else if (dr == DialogResult.No) this.Text = "你选择了no";

  else if (dr == DialogResult.Cancel) this.Text = "你选择了cancel";

 

 

Anchor         控制控件随容器的大小变化的变化方式

Dock                  可以定义在调整控件的父控件大小时如何自动调整控件的大小

 

textBox         默认情况下最多可在一个文本框中输入2048个字符

Muttiline属性设为true,则最多可输入32Kb的文本

 

selectionStart         默认字符插入点

selectionLength

 

ProgressDow         进度条

 

 

this.Cursor. = Cursors.WaitCurosr;                  //设置鼠标指针样式

 

 

 

使用菜单:

文件(&F)         "(&F)"表示菜单对应的快捷键 [W2]

弹出菜单                  ContextMenuStrip控件         DEMO (文字编辑器设计 C#版)

OpenFileDialog控件选择文件         DEMO

ColorDialog控件设置颜色                  DEMO

FontSialog控件设置字体                  DEMO

PrintDialog控件打印对话框         DEMO

 

 

 

 

 

.net三个基本的.net框架类:

Console         convert        Math

 

Console.WriteLine("{0,3}",i);         //右对齐,宽度为3

Console.WriteLine("{0,-3}",i);         //左对齐,宽度为3

Console.WriteLine("{0:D10}",i);         //D为格式控制符,不区分大小写

 

Math.Sqrt()         平方根

Math.Pow(   ,5.0)  5次幂

Math.Log( )         自然对数

 

 

 

 

.NET特别函数:

system.Threading.Thrend.sleep(1000);                //休息一秒钟

Server对象:        

主要是处理页面请求编码转换虚拟路径与物理路径转换等方法

Response.write(Server.MapPath("."));         //当前服务器的物理路径

防止脚本入侵:

Response.Write(Server.HtmlEncode("<script> alert(/"脚本入侵/")</script>"));         //进行编码转换

Response.Write("<script> alert(/"脚本入侵/")</script>");                           //没有进行编码转换

 

Char key = (char)Console.Read();                  //读取一个字符

String str = console.ReadLine();                  //读取一行

s = Console.ReadLine().Trim();

 

 

return String.Format("Red = {0}",(int)c);

 

DateTime time1 = new DateTime.Now;

 

 Application.StartupPath    程序所在的目录

 

Server.MapPath("books.xml")         得到此文件的完整文件名

 

 

File.Exists(path)                  //This path is a file

Directory.Exists(path)                  //This path is a directory.

Directory.CreateDirectory( ) ;

 

Dispose()

Close()

 

Path.GetExtention(name);         //得到文件扩展名

Path.GetFullNameWithoutExtension(path);         //从路径中得到文件名(除去扩展名)

 

Calendar1.SelectedDate.ToShortDateString();

 

Label1.Text = Server.HtmlEncode(TextBox1.Text);  //防止脚本入侵s

 

 

var Myrow = (HtmlTableRow)this.FindControl(Text1.Value);   搜索指定的服务器控件

PreviousPage.FindControl()

 

if(!Page.IsPostBack)                第一次打开时,非刷新时

 

 int i=123;                //定义一个值类型

object        o = i;                //装箱

int  j = (int)o ;                //取消装箱

 与Vb一样





文件操作                 

file         DEMO

Read...         DEMO

fileInfo         DEMO         //如果想多次重用一个对象,可选用fileInfo

 

Directory 类          Directory.Exists(target)        DEMO

DirectoryInfo         DEMO 

Path类        DEMO

Environment类        DEMO

FileStream类        [W1]        DEMO                DEMO                DEMO

 

 

创建FileStream对象的方法有许多种:
① 调用FileStream类的构造函数从文件名直接创建。可以指定不同的FileMode/FileAccess/和FileShare类型。
② 利用File类或者FileInfo类的Open方法创建。可以指定不同的FileMode/FileAccess/和FileShare类型。
③ 利用File类或者FileInfo类的Create方法创建。用于创建新文件,可读可写,相当于使用了FileMode.Create 和 FileAccess.ReadWrite
④ 利用File类或者FileInfo类的OpenRead方法创建。用于打开已经有的文件,只读,相当于使用了FileMode.Open和 FileAccess.Read
⑤ 利用File类或者FileInfo类的OpenWrite方法创建。用于打开已经存在的文件,只写,相当于使用了FileMode.Open和FileAccess.Write

 

 

 

 

安装项编辑器:

视图  编辑器

自定义操作

 

 

 

在ASP.Net中 利用CSS实现多界面的方法.

通过使页面动态加载不同CSS实现多界面: DEMO

 

 

 

 

 

 

 

<srcipt >         <srcipt >                  代码声明块 [W1]

<%                  %>                           代码呈现块

 

 

 

如果非要使用关键字作为标识符,就加上@前缀

String @base

String userName;         相当于String userN/u0061me;

 

 

 

 

服务器端包含:(Server Side Include  SSI)

#include

<!-- #include virtual = "/myapp/  " -->         虚拟目录

<!-- #include file="  "  -->                  物理目录

<script>

<script language="c#" runat="server"  src="   ">[W2]

</script>

 

 

服务器端网页缓存的处理:

<%

//确保打开缓存,此语句必须位于html标签之前

Response.BufferOutput  = true; [W3] //<%@Page  Buffer="true"%> 相同的功能

%>

<htnl>

</htnl>

 

 

 

下面的代码用来设置防止浏览器缓存网页:

<meta http-equiv="Pragma"  content="no-cache" />

<meta http-equiv="Cache-Control"  content="no-cache" />

<meta http-equiv="Expires"  content="0" />

(Response.AddHeader()也可以,只是为了兼容asp,最好不要用了)

Response.AppendHeader("Cache-Control","no-cache");                  //http 1.1

Response.AppendHeader("Pargma","no-cache");                  //http 1.0

 

创建基本身份验证站点

IIS管理控制台建立了SSL安全机制后,只有SSL允许客户才能与SSL允许的Web站点进行通信,并且使用URI资源定位时,输入https://,而不是http://。

创建证书请求文件        

创建证书          (安装和使用证书服务  申请证书  颁发证书  )等 [W4]

 

 

 

 

.net 3.5 新增功能

匿名类型         DEMO

扩展方法         DEMO

Lambda表达式         DEMO

 

 

 

创建模板                  模板右键 添加内容页

WEB用户控件 与 模板 区别 [W5]

 

 

在Visual Studio 2008 简体中文版环境下安装Silverlight3以及Microsoft Expression Blend 3

注意事项

 

 

 

&是位运算符

&&是逻辑运算符

 

.net本身已有的命名空间System.IO

导入命名空间 <%Import  Namespace="System.IO"  %>

也可以导入类 <%Import  Namespace="System.IO.DirectoryInfo"  %>

 

Using还可以自定义别名

Using DI = System.IO.DirectoryInfo;

Public class Myclass{

DI dir = new Di("  ");

}

 

脚本侵入

通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入

Label1.Text = Server.HtmlEncode(TextBox1.Text);

 

ASP.NET 包括了 Web 应用程序根目录运算符 (~),当您在服务器控件中指定路径时可以使用该运算符。ASP.NET 会将 ~ 运算符解析为当前应用程序的根目录。

 

 

 函数必须在代码声明块中声明,全局变量必须在代码吾现块中定义,也可以在代码呈现块中定义,但代码呈现块中定义的变量只有此网页上的其他代码呈现块可以访问它们,函数不能访问他们

 不要在这个标签放置其他编程逻辑,要使用另外一组<script>

通常将包含文件分为多个小文件

 当被设置true时,除非当前网页的所有asp.net 脚本处理完毕或调用了Response.Flush()或Response.End()方法,否则服务器不将响应发送给客户端

 

当被设置true时,则调用Response.End()方法将立即输出缓存内容.

如果不希望将输出返回客户端,应首先调用Response.clear()方法

然后调用Response.End()方法

 

Response.Flush()方法立即发送缓存区中的输出

 证书服务只有在 server系统有

 在ASP.NET中动态加载内容(用户控件和模板)
要点:
1. 使用Page.ParseControl
2. 使用base.LoadControl
第一部分:加载模板
下面是一个模板“<table width=100%><tr><td width=100% colspan=2 runat=server id=ContainerTop></td></tr><tr><td width=30% runat=server id=ContainerLeft></td><td width=70% runat=server id=ContainerRight></td></tr></table>”如何把它添加到页面中那。 

首先,你要有一个页面(.aspx),在页面中有一个一行一列的表格,并且是服务器端的TD我们就把它命名为TemplateContainer。好了现在到代码编辑窗口,在page_load中加载模板。
第二步,使用Page.ParseControl将上边的HTML代码分析为web窗体页或用户控件的System.web.ui.control如下代码:
protected System.Web.UI.HtmlControls.HtmlTableCell TemplateContainer;
System.Web.UI.Control objContainer;
private void Page_Load(object sender, System.EventArgs e)
{
objContainer =Page.ParseControl(“上边的HTML代码);
this.TempContainer.Controls.Add(objContainer);
}
模板已经加载完毕。
第二部分:加载用户控件
首先,你要确定用户控件要加载到页面的那个位置。现在你会发现第一部分的那段HTML代码,其中每一个TD都是一个容器你可以通过Page.FindControl找到你要加载控件的容器。如下代码:
System.Web.UI.Control objControl=Page.FindControl("ContainerTop");
第二,找到容器后,就可以将你的用户控件加载到页面中了。如下代码:
objControl.Controls.Add(base.LoadControl(“用户控件虚拟路径”));
现在运行程序看看,是不是已经加载了用户控件。





 

 

 

文本文件        StreamReader  StreamWriter  

读取文本说明文件

写入文本说明文件

二进制文件        BinaryReader BinaryWriter

XML文件        XmlWriter         XmlReader

读取XML文件并显示每个节点 DEMO

利用XmlWriter来编写XML文件 DEMO

 

 

 

 

基于流的文件操作

BinaryReader和BinaryWriter从streams读取或向Stream写入编码的字符和基元数据类型。

TextReader是StreamReader和StringReader的抽象基类。抽象类Stream用于实现字节输入和输出,而TextWriter用于实现Unicode字符输出。

TextWriter是StreamWriter和StringWriter的抽象基类。抽象类Stream用于实现字节输入和输出,而TextWriter用于实现Unicode字符输出。

StreamReader通过使用Encoding 进行字符和字节的转换,从Stream中读取字符.。

BufferStream是向另一个Stream(例如NetworkStream)添加缓冲的Stream。(FileStream内部也具有缓冲,MemoryStream不需要缓冲。)

MemoryStream是一个非缓冲的流,可能在内存中,直接访问它的封闭数据。此流没有后备存储,可用做临时缓冲区。

 

 

 创建FileStream对象的方法有许多种:

① 调用FileStream类的构造函数从文件名直接创建。可以指定不同的FileMode/FileAccess/和FileShare类型。

② 利用File类或者FileInfo类的Open方法创建。可以指定不同的FileMode/FileAccess/和FileShare类型。

③ 利用File类或者FileInfo类的Create方法创建。用于创建新文件,可读可写,相当于使用了FileMode.Create 和 FileAccess.ReadWrite

④ 利用File类或者FileInfo类的OpenRead方法创建。用于打开已经有的文件,只读,相当于使用了FileMode.Open和 FileAccess.Read

⑤ 利用File类或者FileInfo类的OpenWrite方法创建。用于打开已经存在的文件,只写,相当于使用了FileMode.Open和FileAccess.Write

 

 

 


IHttpHandler接口 MyHalder.cs        web.config
IHttpModule接口  HttpModule 进行系统的权限验证:

 

 

 

 

 

原创粉丝点击