温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#编程技巧有哪些

发布时间:2021-12-01 11:01:16 来源:亿速云 阅读:109 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关C#编程技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

C#编程技巧之一、最小化窗口

点击“X”或“Alt+F4”时,最小化窗口,

如:

protected override void WndProc(ref Message m)  {  const int WM_SYSCOMMAND = 0x0112;  const int SC_CLOSE = 0xF060;  if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)  {  // User clicked close button  this.WindowState = FormWindowState.Minimized;  return;  }  base.WndProc(ref m);  }

C#编程技巧之二、如何让Foreach 循环运行的更快

foreach是一个对集合中的元素进行简单的枚举及处理的现成语句,用法如下例所示:

using System;  using System.Collections;  namespace LoopTest  {  class Class1  {  static void Main(string[] args)  {  // create an ArrayList of strings  ArrayList array = new ArrayList();  array.Add("Marty");  array.Add("Bill");  array.Add("George");  // print the value of every item  foreach (string item in array)  {  Console.WriteLine(item);  }  }  }

你可以将foreach语句用在每个实现了Ienumerable接口的集合里。如果想了解更多foreach的用法,你可以查看.NET Framework SDK文档中的C# Language Specification。

在编译的时候,C#编辑器会对每一个foreach 区域进行转换。

IEnumerator enumerator = array.GetEnumerator();  try   {  string item;  while (enumerator.MoveNext())   {  item = (string) enumerator.Current;  Console.WriteLine(item);  }  }  finally   {  IDisposable d = enumerator as IDisposable;  if (d != null) d.Dispose();  }

这说明在后台,foreach的管理会给你的程序带来一些增加系统开销的额外代码。

C#编程技巧之三、将图片保存到一个XML文件

WinForm的资源文件中,将PictureBox的Image属性等非文字内容都转变成文本保存,这是通过序列化(Serialization)实现的,

例子:

using System.Runtime.Serialization.Formatters.Soap;  Stream stream = new FileStream("E:\\Image.XML",FileMode.Create,FileAccess.Write,FileShare.None);  SoapFormatter f = new SoapFormatter();  Image img = Image.FromFile("E:\\Image.bmp");  f.Serialize(stream,img);  stream.Close();

C#编程技巧之四、屏蔽CTRL-V

在WinForm中的TextBox控件没有办法屏蔽CTRL-V的剪贴板粘贴动作,如果需要一个输入框,但是不希望用户粘贴剪贴板的内容,可以改用RichTextBox控件,并且在KeyDown中屏蔽掉CTRL-V键,例子:

private void richTextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)  {  if(e.Control && e.KeyCode==Keys.V)  e.Handled = true;  }

C#编程技巧之五、判断文件或文件夹是否存在

使用System.IO.File,要检查一个文件是否存在非常简单:

bool exist = System.IO.File.Exists(fileName);

如果需要判断目录(文件夹)是否存在,可以使用System.IO.Directory:

bool exist = System.IO.Directory.Exists(folderName);

C#编程技巧之六、使用delegate类型设计自定义事件

在C#编程中,除了Method和Property,任何Class都可以有自己的事件(Event)。定义和使用自定义事件的步骤如下:

(1)在Class之外定义一个delegate类型,用于确定事件程序的接口

(2)在Class内部,声明一个public event变量,类型为上一步骤定义的delegate类型

(3)在某个Method或者Property内部某处,触发事件

(4)Client程序中使用+=操作符指定事件处理程序

例子: // 定义Delegate类型,约束事件程序的参数

public delegate void MyEventHandler(object sender, long lineNumber) ;  public class DataImports  {  // 定义新事件NewLineRead  public event MyEventHandler NewLineRead ;  public void ImportData()  {  long i = 0 ; // 事件参数  while()  {  i++ ;  // 触发事件  if( NewLineRead != null ) NewLineRead(this, i);  //...  }  //...  }  //...  }  // 以下为Client代码  private void CallMethod()  {  // 声明Class变量,不需要WithEvents  private DataImports _da = null;  // 指定事件处理程序  _da.NewLineRead += new MyEventHandler(this.DA_EnterNewLine) ;   // 调用Class方法,途中会触发事件  _da.ImportData();  }  // 事件处理程序  private void DA_EnterNewLine(object sender, long lineNumber)  {  // ...  }

C#编程技巧之七、IP与主机名解析

使用System.Net可以实现与Ping命令行类似的IP解析功能,例如将主机名解析为IP或者反过来:

private string GetHostNameByIP(string ipAddress)  {  IPHostEntry hostInfo = Dns.GetHostByAddress(ipAddress);  return hostInfo.HostName;  }  private string GetIPByHostName(string hostName)  {  System.Net.IPHostEntry hostInfo = Dns.GetHostByName(hostName);  return hostInfo.AddressList[0].ToString();  }

感谢各位的阅读!关于“C#编程技巧有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI