晓峰 的个人资料13照片日志列表更多 工具 帮助

日志


11月7日

c#.net常用函数列表

1、DateTime 数字型 System.DateTime currentTime=new System.DateTime();

 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now;

 1.2 取当前年 int 年=currentTime.Year;

 1.3 取当前月 int 月=currentTime.Month;

 1.4 取当前日 int 日=currentTime.Day;

 1.5 取当前时 int 时=currentTime.Hour;

 1.6 取当前分 int 分=currentTime.Minute;

 1.7 取当前秒 int 秒=currentTime.Second;

 1.8 取当前毫秒 int 毫秒=currentTime.Millisecond; (变量可用中文)

 1.9 取中文日期显示——年月日时分 string strY=currentTime.ToString("f"); //不显示秒

 1.10 取中文日期显示_年月 string strYM=currentTime.ToString("y"); 

 1.11 取中文日期显示_月日 string strMD=currentTime.ToString("m"); 

 1.12 取当前年月日,格式为:2003-9-23 string strYMD=currentTime.ToString("d"); 

 1.13 取当前时分,格式为:14:24 string strT=currentTime.ToString("t");

2、Int32.Parse(变量) Int32.Parse("常量") 字符型转换 转为32位数字型 

3、 变量.ToString() 字符型转换 转为字符串 12345.ToString("n"); //生成 12,345.00 12345.ToString("C"); //生成 ¥12,345.00 12345.ToString("e"); //生成 1.234500e+004 12345.ToString("f4"); //生成 12345.0000 12345.ToString("x"); //生成 3039 (16进制) 12345.ToString("p"); //生成 1,234,500.00%

4、变量.Length 数字型 取字串长度: 如: string str="中国"; int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名

5、System.Text.Encoding.Default.GetBytes(变量) 字码转换 转为比特码 如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 然后可得到比特长度: len = bytStr.Length;

6、System.Text.StringBuilder("") 字符串相加,(+号是不是也一样?) 如:System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("中华"); sb.Append("人民"); sb.Append("共和国");

7、变量.Substring(参数1,参数2); 截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2);

8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); 取远程用户IP地址

9、穿过代理服务器取远程用户真实IP地址: if(Request.ServerVariables["HTTP_VIA"]!=null){ string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); }else{ string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); }

10、 Session["变量"]; 存取Session值; 如,赋值: Session["username"]="小布什"; chinaitpower.comNJMNpKx60pHmoHa 取值: Object objName=Session["username"]; String strName=objName.ToString(); 清空: Session.RemoveAll();

11、String str=Request.QueryString["变量"]; 用超链接传送变量。 如在任一页中建超链接:点击 在Edit.aspx页中取值:String str=Request.QueryString["fdid"];

12、DOC对象.CreateElement("新建节点名"); 创建XML文档新节点

13、父节点.AppendChild(子节点); 将新建的子节点加到XML文档父节点下

14、 父节点.RemoveChild(节点); 删除节点

15、Response Response.Write("字串"); Response.Write(变量); 向页面输出。 Response.Redirect("URL地址"); 跳转到URL指定的页面

16、char.IsWhiteSpce(字串变量,位数)——逻辑型 查指定位置是否空字符; 如: string str="中国 人民"; Response.Write(char.IsWhiteSpace(str,2)); //结果为:True, 第一个字符是0位,2是第三个字符。

17、char.IsPunctuation(''字符'') --逻辑型 查字符是否是标点符号 如:Response.Write(char.IsPunctuation(''A'')); //返回:False

18、(int)''字符'' 把字符转为数字,查代码点,注意是单引号。 如: Response.Write((int)''中''); //结果为中字的代码:20013

19、(char)代码 把数字转为字符,查代码代表的字符。 如: Response.Write((char)22269); //返回“国”字。

20、 Trim() 清除字串前后空格

21 、字串变量.Replace("子字串","替换为") 字串替换 如: string str="中国"; str=str.Replace("国","央"); //将国字换为央字 Response.Write(str); //输出结果为“中央”

再如:(这个非常实用)

string str="这是<script>脚本";
str=str.Replace("<","<font><</font>"); //将左尖括号替换为<font> 与 < 与 </font> (或换为<,但估计经XML存诸后,再提出仍会还原)
Response.Write(str); //显示为:“这是<script>脚本”

如果不替换,<script>将不显示,如果是一段脚本,将运行;而替换后,脚本将不运行。
这段代码的价值在于:你可以让一个文本中的所有HTML标签失效,全部显示出来,保护你的具有交互性的站点。
具体实现:将你的表单提交按钮脚本加上下面代码:
string strSubmit=label1.Text; //label1是你让用户提交数据的控件ID。
strSubmit=strSubmit.Replace("<","<font><</font>");
然后保存或输出strSubmit。
用此方法还可以简单实现UBB代码。

22、Math.Max(i,j)
取i与j中的最大值
如 int x=Math.Max(5,10); // x将取值 10

23、字串对比一般都用: if(str1==str2){ } , 但还有别的方法: chinaitpower.comNJMNpKx60pHmoHa

(1)、
string str1; str2
//语法: str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如:
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }

(2)、
//语法:str1.Equals(str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

(3)、
//语法 Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

24、IndexOf() 、LastIndexOf()
查找字串中指定字符或字串首次(最后一次)出现的位置,返回索引值,如:
str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置)
str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)

25、Insert()
在字串中指定索引位插入指定字符。如:
str1.Insert(1,"字");在str1的第二个字符处插入“字”,如果str1="中国",插入后为“中字国”;

26、PadLeft()、PadRight()
在字串左(或右)加空格或指定char字符,使字串达到指定长度,如:
<%
string str1="中国人";
str1=str1.PadLeft(10,''1''); //无第二参数为加空格
Response.Write(str1); //结果为“1111111中国人” , 字串长为10
%>

27、Remove()
从指定位置开始删除指定数的字符
字串对比一般都用: if(str1==str2){ } , 但还有别的方法

1、
string str1; str2
//语法: str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如:
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }

2、
//语法:str1.Equals(str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

3、
//语法 Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

IndexOf()
查找字串中指定字符或字串首次出现的位置,返首索引值,如:
str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置)
str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置) 

5月11日

追本溯源--C的精神

摘自2004年第10期《程序员》杂志:

……
ANSI C标准的设计原则:
标准委员会以存续C的传统精神作为其主要使命。C之精神包括许多方面,究其本源乃是出于C语言社群对语言深层次原则的认同感。C之精神的某些方面或以短语形式总结如下:
1、信任程序员
2、不要阻拦程序员做那些应该做的事
3、保持语言小而简洁
4、任何操作只能有一种方式完成
5、即使移植性不能保证也要保证效率
……
在很多方面,其实B语言才是这些精神的最佳体现,从那时开始的演化过程可以被看作是对这五条原则的不断折衷与妥协。
……
当我们在PC机上确认程序工作无误后,我们计划用两个礼拜的时间把它移植到VMS机器上,为此我们租用了附近大学的VAX机器。而结果只用了两天,仅仅修改了两个小错误--因为我把int类型记成16位了--就完成了移植工作。在大学的第二天快结束的时候,我记得一个学生在我的身后,看着屏幕问道:“那是什么?”
我回答说:“C代码。”
“什么是C”,他问道。
“可移植的结构化汇编语言。”,我这样回答他。
“这正是这个世界所需要的”,他说。
我直到现在还不能确定当时到底他是认真的还是只是在讥讽。但我当时已经深深的、不能回头地爱上了C语言。
……

5月8日

More Effective C++

Basics

1.Distinguish between pointers and references.

2.Prefer C++ style casts.

3.Never treat arrays polymorphically.

4.Avoid gratuitous default constructors.

Operators

5.Be wary of user-defined conversion functions.

6.Distinguish between prefix and postfix forms of increment and decrement oprators.

7.Never overload &&, || or ,.

8.Understand the different meanings of new and delete.

Exceptions

9.Use destructors to prevent resource leaks.

10.Prevent resource leaks in constructors.

11.Prevent exceptions from leaving destructors.

12.Understand how throwing an exception differs from passing a parameter or calling a virtual function.

13.Catch exceptions by reference.

14.Use exception specifications judiciously.

15.Understand the costs of exception handlling.

Effeciency

16.Remember the 80-20 rule.

17.Consider using lazy evaluation.

18.Amortize the cost of expected computations.

19.Understand the origin of temporary objects.

20.Faciliate the return value optimization.

21.Overload to avoid implicity type conversions.

22.Consider using op= instead of stand-alone op.

23.Consider alternative libraries.

24.Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI.

25.Virtualizing constructors and non-member functions.

26.Limiting the number of objects of a class.

27.Requiring or prohibiting heap-based objects.

28.Smart Pointers.

29.Reference counting.

30.Proxy classes.

31.Making functions virtual with respect to more than one object

Miscellany

32.Program in the future tense.

33.Make non-leaf classes abstract.

34.Understand how to combine C++ and C in the same program.

35.Familiarize yourself with the language standard.

Effective C++

Shifting from C to C++

1.Prefer const and inline to #define.

2.Prefer <iostream> to <stdio.h>.

3.Prefer new and delete to malloc and free.

4.Prefer C++ style comments.

Memory Management

5.Use the same form in corresponding uses of new and delete.

6.Use delete on pointer members indestructors.

7.Be prepared for out-of-memory conditions.

8.Adhere to convention when writing operator new and operator delete.

9.Avoide hiding the "normal" form of new.

10.Write operator delete if you write operator new.

Constructors, Destuctors andd Assignment operators

11.Declare a copy constructor and an assignment operator for class with dynamically allocated memory.

12.Prefer initiallization to assignment in constructors.

13.List members in an initialization list in the order in which they are declared.

14.Make sure base classes have virtual destructors.

15.Have operator= return a reference to *this.

16.Assign to all data members in operator=.

17.Check for assignment to self in operator=.

Classes and Function:design and Declaration

18.Strive for class interfaces that are complete and minimal.

19.Differentiate among member functions, non-member functions, and friend funcions.

20.Avoid data members in the public interface.

21.Use const whenever possible.

22.Prefer pass-by-reference to pass-by-value.

23.Don't try to return a reference when you must return an object.

24.Choose carefully between function overloading and parameter defaulting.

25.Avoid overloading on a pointer and numerical type.

26.Guard against potential ambiguity.

27.Explicitly disallow use of implicity generated member functions you don't want.

28.Partition the global namespace.

Classes and Functions:Implementation

29.Avoid returning "handles" to internal data.

30.Avoid member functions that return non-const pointer or references to member less accessible than themselves.

31.Never return a reference to a local object or to a dereferenced pointer initialized by new within the function.

32.Postpone variable definitions as long as possible.

33.Use inlining judiciously.

34.Minimize compilation dependencies between files.

Inheritance and Object-Oriented Design:

35.Make sure public inheritance models "isa".

36.Differentiate between inheritance of interface and inheritance of implementation.

37.Never redefine an inherited nonvirtual function.

38.Never redefine an inherited default parameter value.

39.Avoid casts down the inheritance hierarchy.

40.Model "has-a" or "is-implemented-in-terms-of" through layering.

41.Differentiate between inheritance and templates.

42.Use private inheritance judiciously.

43.Use multiple inheritance judiciously.

44.Say what you mean; understand what you're saying.

Miscellany

45.Know what function C++ silently writes and calls.

46.Prefer complie-time and link-time errors to runtime errors.

47.Ensure that non-local static objects are initialized before they're used.

48.Pay attention to compiler warnings.

49.Familiarize yourself with the standard library.

50.Improve your understanding of C++.