C#技术总结

来源:互联网 发布:《大数据时代》经典句 编辑:程序博客网 时间:2024/04/29 13:53

C#学习笔记:

2005/2/18

F5为编译并输出窗口(检查错误)
Ctrl+F5为编译并输出窗口(不检查)
CTRL+SHIFT+B为编译但不输出窗口

显示编辑器中的行数,可以工具--选项--文本编辑器中,行数打勾就行.


备注'//'方式不能分两行

在数据类型中,u是"unsigned"的缩写,表示不能为负数


设定默认启动的C# windows程序:
  [STAThread]
  static void Main() {
   Application.Run(new DataForm1());
  }


2005/2/19

字符显示出又引号,要在引号前加/,如"/"myGame/""


Console.WriteLine("{0}{1}",myString,myInteger)//中的{0}表示myString的占位符,{1}为myInteger的占位符.

转义字符表:(后面为产生的字符)
/' 单引号
/" 双引号 
// 反斜杠
/0 空
/a 警告(产生鸣响)
/b 退格
/f 换页
/n 换行
/r 回车
/t 水平制表符
/v 垂直制表符


有双斜杠的字符串中,前面可加@,如@"C:/Temp/Doc/MyFile.doc"


C#调试使错误能反鐀的代码:
 try
  { 
    ....
  } 
 catch (Exception e)
  {
   Console.WriteLine("Fuck you !SHit");//自定义的信息
   Console.WriteLine(e.ToString());//加Exception e则显示系统错误详细信息
     }

C#布尔表达式:
== 等于  !=不等于  < 小于  > 大于  <=小于或等于  >=大于或等于
!  &都  |或  ^其中之一 &&如果都是  ||或其中之一


转为小写语句:对象.ToLower()

 

2005-2-24

退出循环语句:
break  立即终止
continue 终止当前循环继续执行下次循环
goto  跳出循环,到已标记的位置上
retun  跳出循环,并继续执行循环后的第一行代码.


在自定义函数中,要用return表示返回值,在Main中调用时,只能完整调用结果,且数字类型要一致.

foreach(int val in vals) 表示:定义一个int类型的数据,读出数组vals中的第一个值,并循环每一个值.


<a href="../" onclick="return confirm('确定要删除吗?')" >删除</a>

 

2005-2-28

打开窗口的方法:在工具箱中找到openFileDialog加入FORM,然后加入一个按钮,双击按钮增加事件openFileDialog1.ShowDialog();
加其它的Dialog,方法类似.

设定对象的颜色:如button1.BackColor = Color.Red;

程序退出:Close()或Application.Exit();

按钮或其它对象加超链接:System.Diagnostics.Process.Start("IEXPLORE.EXE","www.xxxx.com.cn");

 


2005-3-1


在初始程序时设定对对象的状态:
在InitializeComponent();中加入以下示例代码
this.button1.Enabled=false;

C# 调用 js:(注意:调出时确定前端的html是否加了Runat=server,否则出错)
<script>
    funtion mm()
    {
     ....
    }
<script>
btnNex.attribute.add("onclick","mm()");


2005-3-2

取得groupBox1里的值:
问:groupBox1放有radioButton1和radioButton2,在后台如何取得groupBox1里面选的值?
答:output+="Sex:"+(string)(this.radioButton1.Checked?"Female":"Male")+"/r/n";

RichTextBox:
在设定RichTextBox的字体格式中"~"号可以理解为去除的意思.

RichTextBox识别超链接:在初始化中加入
this.rtfText.LinkClicked+=new LinkClickedEventHandler(rtfText_LinkClicked);
事件为:
System.Diagnostics.Process.Start(e.LinkText);

 

启用智能导航

<%@ Page language="c#" SmartNavigation="True" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Sample.WebForm1" %>

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;  
    (变量可用中文)  

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"]="小布什";  

          取值:  Object objName=Session["username"];  
                  String strName=objName.ToString();  
          清空:  Session.RemoveAll();  

11、String str=Request.QueryString["变量"];  
      用超链接传送变量。  
       如在任一页中建超链接:<a href=Edit.aspx?fbid=23>点击</a>  
       在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> (或换为&lt,但估计经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

1, 结构(struct) 与 类(class)
[attributes] [modifiers] struct identifier [:interfaces] body [;]
结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。结构可以声明构造函数,但它们必须带参数。声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段是错误的。在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可实现接口,其方式同类完全一样。
[c++] 与 C++ 不同,无法使用 struct 关键字声明类。在 C# 中,类与结构在语义上是不同的。结构是值类型,而类是引用类型。
2, 装箱和拆箱(取消装箱)
装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。关键字 object. 取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括:检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。
例:
int i = 123; // A value type
object box = i; // Boxing
int j = (int)box; // Unboxing

装箱转换
取消装箱
3 , 隐式和显式
下列转换属于隐式转换:例:object o=i;
标识转换。
隐式数值转换。
隐式枚举转换。
隐式引用转换。
装箱转换。
隐式常数表达式转换。
用户定义的隐式转换。
下列转换属于显式转换: object 0=(object)i;
所有隐式转换。
显式数值转换。
显式枚举转换。
显式引用转换。
显式接口转换。
取消装箱转换。
用户定义的显式转换
4, delegate(委托)
delegate void D(int x);
class C{
public static void M1(int i) { /* ... */ }
public static void M2(int i) { /* ... */ }}
class{…….D cd1 = new D(C.M1);………….}
委托是一个数据结构,该数据结构引用一个静态方法,或引用一个对象实例和该对象的实例方法。在 C 或 C++ 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用其方法的对象的引用。与 C++ 函数指针不同,委托是完全面对对象的;与指向成员函数的 C++ 指针不同,委托同时封装对象实例和方法。委托声明定义从类 System.Delegate 派生的类。委托实例封装一个或多个方法,每个方法都被称为可调用实体。对于实例方法,可调用实体由一个实例和该实例上的方法组成。对于静态方法,可调用实体仅由一个方法组成。给定委托实例和适当的参数集,便可以用该参数集调用此委托实例的所有方法。委托实例的一个有趣和有用的属性是它不了解或不关心它所封装的方法的类;真正重要的只是方法要与委托的类型兼容, 这使委托非常适合“匿名”调用。可选的形参表指定委托的参数,而返回类型则指示委托的返回类型。如果下面两个条件都为真,则方法和委托类型是兼容的:(兼容的概念就是可以用此声明的委托对方法进行委托).
1它们具有相同的参数数目,并且类型相同,顺序相同,参数修饰符也相同。
2它们的返回类型相同。
C# 中的委托类型是名称等效的,而不是结构等效的。(但是请注意:两个不同但结构上等效的委托类型的实例可能会比较为相等),准确地说,两个具有相同参数列表、签名和返回类型的不同的委托类型被认为是不同的委托类型。委托实例所封装的方法集合称为调用列表。
5, interface(接口)
[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。接口可以是命名空间或类的成员,并且可以包含下列成员的签名:方法属性 索引器.
一个接口可从一个或多个基接口继承。接口可由类实现。实现的接口的标识符出现在类的基列表中。被继承的接口称为该接口的显式基接口。当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。接口成员是通过 I.M 和 I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是该接口类型的方法、属性或事件,A 是索引器参数列表。接口可以由类和结构实现。为了指示类或结构实现接口,在该类或结构的基类列表中包含了接口标识符。在实现类或结构中定位接口成员的实现的过程称为接口映射。
6,object
object 类类型是所有其他类型的最终基类。C# 中的每种类型都是直接或间接从 object 类类型派生的。可以把任何类型的数值给object类型.
7,string类型
string 类的实例表示 Unicode 字符串。尽管 string 是引用类型,但相等运算符(== 和 !=)被定义为比较 string 对象(而不是引用)的“值”(7.9.7 字符串相等运算符)。这使得对字符串相等性的测试更为直观。字符串为 string 类型并可写成两种形式,即用引号引起来和用 @ 引起来。用引号引起来的字符串括在双引号 (") 内, 并且可以包含包括换码序列在内的任何字符用 @ 引起来的字符串以 @ 开头,并用双引号引起来。用 @ 引起来的字符串以 @ 开头,并用双引号引起来。若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号:@ 符号的另一种用法是使用碰巧成为 C# 关键字的被引用的 (/reference) 标识符。
8, 修饰符
修饰符作用
访问修饰符
public
private
internal
protected
指定声明的类型和类型成员的可访问性。

访问不受限制
只有包含该类的成员的类可以访问
只有当前工程可以访问
只有包含该成员的类和继承的类可以访问
abstract指示某个类只能是其他类的基类。
const指定无法修改字段或局部变量的值。
event声明一个事件。
extern指示外部实现此方法。
override提供从基类继承的虚拟成员的新实现。
readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。
sealed指定类不能被继承。
static声明属于类型本身而不是属于特定对象的成员。
unsafe声明不安全的上下文。
virtual在派生类中声明其实现可由重写成员更改的方法或访问器。
volatile指示字段可由操作系统、硬件或并发执行的线程等在程序中进行修改。

9,语句
语句是程序指令。除非特别说明,语句都按顺序执行。C# 具有下列类别的语句。
类别C# 关键字
选择语句if, else, switch, case
迭代语句do, for, foreach, in, while
跳转语句break, continue, default, goto, return
异常处理语句throw, try-catch, try-finally
Checked 和 Uncheckedchecked, unchecked
fixed 语句Fixed
lock 语句Lock

(1) foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。此语句的形式如下:
foreach (type identifier in expression) statement
若要循环访问集合,集合必须满足特定的要求。集合类型:
必须是 interface、class 或 struct。
必须包括返回类型的名为 GetEnumerator 的实例方法,例如 Enumerator(详见下文)。
Enumerator 类型(类或结构)必须包含:
一个名为 Current 的属性,它返回 ItemType 或者可以转换为此类型的类型。属性访问器返回集合的当前元素。
· 一个名为 MoveNext 的 bool 方法,它递增项计数器并在集合中存在更多项时返回 true。
有三种使用集合的方法:
使用上述指导创建一个集合。此集合只能用于 C# 程序。
1. 使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。
2. 在集合类中使用一个预定义的集合。
(2) throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。throw 语句的形式为:
throw [expression];
expression :异常对象。当在 catch 子句中再次引发当前异常对象时,它被省略。
(3)try –catch语句
try-catch 语句由一个 try 块和其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。try-catch 语句采用下列形式之一:
try try-block
catch (exception-declaration-1) catch-block-1
catch (exception-declaration-2) catch-block-2
...
try try-block catch catch-block
(4) fixed
防止变量被垃圾回收器重定位。
(5) lock
lock 关键字将某个语句块标记为临界区。
6. 方法参数
如果为没有 ref 或 out 的方法声明一个参数,则此参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中.
params :params 关键字可以指定在参数数目可变处采用参数的方法参数
ref :引用传递
out :
7, namespace(名字空间) 

原创粉丝点击