C# 基础学习笔记

来源:互联网 发布:gson封装复杂json 编辑:程序博客网 时间:2024/04/29 06:20

****Label换行显示***

如果是要在网页里体现,label1.Text = "好久不见<br/>你还好吗?";

如果是WinForm程序,label1.Text = "好久不见/r/n你还好吗?";

 

*****输出显示格式***

C#格式化数值结果表

C货币 string.Format("{0:C3}", 2)2.000

D十进制 string.Format("{0:D3}", 2) 002

E科学计数法 1.20E+001 1.20E+001

G常规 string.Format("{0:G}", 2) 2

N用分号隔开的数字 string.Format("{0:N}", 250000) 250,000.00

X十六进制 string.Format("{0:X000}", 12) C

  

变量.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%

 

 

*****构造DataTable*********

离线模式数据存储与操作

DataSetDataTableDataRowDataColumnDataCollection))

 

DataTabledtMarket =newDataTable();

dtMarket.Columns.Add("Market");

dtMarket.Columns.Add("Description");

DataRowdr =dtMarket.Rows.Add();

dr[0] ="HKF";

dr[1] ="HK Market";

DataTable_dtMarket = cApplication.GetInstance()._Market;

if(_dtMarket.Rows[i]["Active"].ToString().Trim() == "Yes"&&                                _dtMarket.Rows[i]["Market"].ToString().Trim() != "NHKFE")

{

DataRowdr = dtMarket.Rows.Add();

dr[0] =_dtMarket.Rows[i]["Market"].ToString().Trim();

dr[1] =_dtMarket.Rows[i]["Description"].ToString().Trim();

}

 

 

******字符串分隔成字符数组**

publicvoidLoadFormDimension(ForminForm)

{

String[]aState;

String[]aForm;

stringstrFormDim;

 

strFormDim=settings.SettingGet("FormDimension",inForm.Name);

aState =strFormDim.Split('|');//put string split String[];

 

aForm =aState[1].Split(','); //put string split String[];

inForm.WindowState.Equals(aForm[4].ToString());

if (aForm[4].ToString()=="0")

{

inForm.Top.Equals(aForm[0].ToString());

inForm.Left.Equals(aForm[1].ToString());

inForm.Height.Equals(aForm[2].ToString());

inForm.Width.Equals(aForm[3].ToString());

}

 

 

 

*****键盘输入键控制窗体的操作****

privatevoidform_KeyPress(objectsender,KeyPressEventArgse)

{

if (e.KeyChar == (char)Keys.Enter)

{

SendKeys.Send("{Tab}");

}

if (e.KeyChar == (char)Keys.Escape)

{

this.Close();

}

}

  

******参数传递************************

Param参数可接受多个参数,不同的类型,

Private void GetParam(params object[] list)

{

For(int i=0;i<list.Lentgh;i++)

{

 Consule.WriteLine(List[i]+”/r/n”);

}

}

 

Private static void Main()

{

 GetParam(6,’r’,”Road!”);

Consule.ReadLine();

}

ref关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字。例如:

class RefExample

{

   static void Method(ref int i)

   {

       i = 44;

   }

   static void Main()

   {

       int val = 0;

       Method(ref val);

       // val is now 44

   }

}

传递到ref参数的参数必须最先初始化。这与 out不同,out的参数在传递之前不需要显式初始化。

尽管refout在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用ref参数,而另一个方法采用out参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:

class CS0663_Example

{

   // compiler error CS0663: "cannot define overloaded

   // methods that differ only on ref and out"

   public void SampleMethod(ref int i) { }

   public void SampleMethod(out int i) { }

}

但是,如果一个方法采用refout参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:

class RefOutOverloadExample

{

   public void SampleMethod(int i) { }

   public void SampleMethod(ref int i) { }

}

属性不是变量,因此不能作为ref参数传递

 

按引用传递值类型(如上所示)是有用的,但是ref对于传递引用类型也是很有用的。这允许被调用的方法修改该引用所引用的对象,因为引用本身是按引用来传递的。下面的示例显示出当引用类型作为ref参数传递时,可以更改对象本身。

class RefRefExample

{

   static void Method(ref string s)

   {

       s = "changed";

   }

   static void Main()

   {

       string str = "original";//string is a reference type

       Method(ref str);

       // str is now "changed"

   }

}

 

****************************************************************************************************

 

 

****序列化与反序列化*************

.NET三类序列化方式:XMLSerializer, SOAPSerializer, BinarySerialize

 

需要序列化该对象,必须在给该类加上Serializable的属性,然后创建一个序列化写入的流:FileStream fileStream = new FileStream("temp.dat", FileMode.Create);然后创建二进制格式器:BinaryFormatter b=new BinaryFormatter();然后是序列化:b.Serialize(fileStream,c);,然后关闭保存流。

 

///序列化:把对象转换为字节序列的过程为对象

       publicstaticbyte[]Serialize(objectgraph)

       {

           using (System.IO.MemoryStreammem = new System.IO.MemoryStream())

           {

               BinaryFormatterbinary = new BinaryFormatter();

               binary.Serialize(mem,graph);

               returnmem.ToArray();

           }

       }

///反序列化:把字节序列恢复为对象的过程

       publicstaticobjectDeSerialize(byte[]buffer)

       {

           using (System.IO.MemoryStreammem = new System.IO.MemoryStream(buffer))

           {

               mem.Position = 0;

               BinaryFormatterbinary = new BinaryFormatter();

               returnbinary.Deserialize(mem);

           }

       }

Other example:XMLSerializer b=newXMLSerializer ();

              SOAPSerializer binary =new SOAPSerializer();

  

*********** 写日志函数 ************

publicstaticvoidLogWriter(stringstrTxt,boolchangeLine)

{

FileStreamfileStream=null;

CultureInfoci =new CultureInfo("en-US");

if (changeLine)

{

strTxt="/r/n/""+strTxt+"/"";

}

else

{

strTxt=strTxt+"/"";

}

 

//Application.ExecutablePath

FillPath =FillPath+DateTime.Now.ToString("yyyy MM dd",ci)+".log";

 

fileStream=File.Open(FillPath,FileMode.OpenOrCreate);

fileStream.Seek(0,SeekOrigin.End);

 

StreamWriterWriterStr = newStreamWriter(fileStream);

WriterStr.WriteLine(DateTime.Now.ToString("yyyy:MM:dd HH:MM:SS " + "    ") +strTxt +"   ");

WriterStr.Flush();

fileStream.Close();

}

 

 

**********发送邮件*************

通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送:
1.通过Localhost
2.通过普通SMTP;
3.通过SSLSMTP;

下面一个一个来说:

1.通过LocalHost

 

1publicvoid SendMailLocalhost()
2...
{
3 System.Net.Mail.MailMessage msg =new
System.Net.Mail.MailMessage();
4 msg.To.Add("a@a.com"
);
5 msg.To.Add("b@b.com"
);
6/**/
/*
7
* msg.To.Add("b@b.com");
8
* msg.To.Add("b@b.com");
9 * msg.To.Add("b@b.com");可以发送给多人

10 */
11 msg.CC.Add("c@c.com");
12/**/
/*
13
* msg.CC.Add("c@c.com");
14 * msg.CC.Add("c@c.com");可以抄送给多人

15 */
16 msg.From =new MailAddress("a@a.com","AlphaWu", System.Text.Encoding.UTF8);
17/**//*上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/

18 msg.Subject ="这是测试邮件";//邮件标题
19msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
20msg.Body ="邮件内容";//邮件内容
21msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
22msg.IsBodyHtml =false;//是否是HTML邮件
23msg.Priority = MailPriority.High;//邮件优先级
24
25 SmtpClient client =new SmtpClient();
26 client.Host ="localhost"
;
27object
userState = msg;
28try

29...{
30
client.SendAsync(msg, userState);
31//简单一点儿可以
client.Send(msg);
32MessageBox.Show("发送成功"
);
33
}
34catch
(System.Net.Mail.SmtpException ex)
35...
{
36 MessageBox.Show(ex.Message,"发送邮件出错"
);
37
}
38
}
39

 

2.通过普通SMTP

1publicvoid SendMailUseZj()
2...
{
3 System.Net.Mail.MailMessage msg =new
System.Net.Mail.MailMessage();
4 msg.To.Add("a@a.com"
);
5 msg.To.Add("b@b.com"
);
6/**/
/*
7
* msg.To.Add("b@b.com");
8
* msg.To.Add("b@b.com");
9 * msg.To.Add("b@b.com");可以发送给多人

10 */
11 msg.CC.Add("c@c.com");
12/**/
/*
13
* msg.CC.Add("c@c.com");
14 * msg.CC.Add("c@c.com");可以抄送给多人

15 */
16 msg.From =new MailAddress("a@a.com","AlphaWu", System.Text.Encoding.UTF8);
17/**//*上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/

18 msg.Subject ="这是测试邮件";//邮件标题
19msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
20msg.Body ="邮件内容";//邮件内容
21msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
22msg.IsBodyHtml =false;//是否是HTML邮件
23msg.Priority = MailPriority.High;//邮件优先级
24
25 SmtpClient client =new SmtpClient();
26 client.Credentials =new System.Net.NetworkCredential("username@zj.com","userpass"
);
27//zj.com注册的邮箱和密码

28client.Host ="smtp.zj.com";
29object
userState = msg;
30try

31...{
32
client.SendAsync(msg, userState);
33//简单一点儿可以
client.Send(msg);
34MessageBox.Show("发送成功"
);
35
}
36catch
(System.Net.Mail.SmtpException ex)
37...
{
38 MessageBox.Show(ex.Message,"发送邮件出错"
);
39
}
40 }

3.通过SSLSMTP

1publicvoid SendMailUseGmail()
2
...{
3 System.Net.Mail.MailMessage msg =new
System.Net.Mail.MailMessage();
4 msg.To.Add("a@a.com"
);
5 msg.To.Add("b@b.com"
);
6/**/
/*
7
* msg.To.Add("b@b.com");
8
* msg.To.Add("b@b.com");
9 * msg.To.Add("b@b.com");可以发送给多人

10 */
11 msg.CC.Add("c@c.com");
12/**/
/*
13
* msg.CC.Add("c@c.com");
14 * msg.CC.Add("c@c.com");可以抄送给多人

15 */
16 msg.From =new MailAddress("a@a.com","AlphaWu", System.Text.Encoding.UTF8);
17/**//*上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/

18 msg.Subject ="这是测试邮件";//邮件标题
19msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
20msg.Body ="邮件内容";//邮件内容
21msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
22msg.IsBodyHtml =false;//是否是HTML邮件
23msg.Priority = MailPriority.High;//邮件优先级
24
25 SmtpClient client =new SmtpClient();
26 client.Credentials =new System.Net.NetworkCredential("username@gmail.com","password"
);
27//上述写你的GMail邮箱和密码

28client.Port =587;//Gmail使用的端口
29client.Host ="smtp.gmail.com";
30 client.EnableSsl =true;//经过ssl加密

31object userState = msg;
32try

33...{
34
client.SendAsync(msg, userState);
35//简单一点儿可以
client.Send(msg);
36MessageBox.Show("发送成功"
);
37
}
38catch
(System.Net.Mail.SmtpException ex)
39
...{
40 MessageBox.Show(ex.Message,"发送邮件出错"
);
41
}
42
}
43

 

 

*************LINQ***************

publicclassPepole

{

private string_Name;

private int_Age;

 

publicstringName

{

get {return_Name; }

}

 

publicintAge

{

get {return_Age; }

}

 

publicPepole(stringname,intage)

{

this._Name=name;

this._Age=age;

}

}

 

Form Program

privatevoidbutton1_Click(objectsender,EventArgse)

{

List<Pepole>strArry =new List<Pepole>();

Pepoleperson1=newPepole("Jeson", 18);

Pepoleperson2 =new Pepole("Peter", 14);

strArry.Add(person1);

strArry.Add(person2);

Pepole[]pep={newPepole("Jeson",18),newPepole("Peter",15)};

//Language Interate Query;

varquery1 =

fromvar1inpep

selectvar1;

 

//Language Interate Query;

varquery2 =

fromvar2instrArry

wherevar2.Age > 15

selectvar2;

 

 

foreach (Pepoleitem1inquery1)

{textBox1.Text =textBox1.Text +item1.Name +":" +item1.Age+",";}

 

foreach (Pepoleitem2inquery2)

{textBox2.Text =textBox2.Text +item2.Name +":" +item2.Age +",";}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

stringstrnum=textBox1.Text.Replace(",","");

intnum =strnum.Length;

int[]list=newint[num];

for (intj = 0; j < num;j++)

{

list[j]=(int.Parse(strnum.Substring(j, 1)));

}

//Language Interate Query;

varquery3=

fromvar3inlist

orderbyvar3descending

selectvar3;

foreach(variteminquery3)

{

textBox2.Text =textBox2.Text +item+",";

}

}

 

原创粉丝点击