.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.MulticastDelegate→System.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 进行系统的权限验证: