国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當前位置:首頁 > 網站舊欄目 > 學習園地 > 程序開發教程 > C# Small Tips

C# Small Tips
2009-12-23 10:52:26  作者:cnblogs  來源:cnblogs

學習和使用C#這么久,也有了些可以跟大家分享的經驗和教訓,這里分享下幾個關于C#開發的小技巧:

1. 輸出變量的名稱。

    需求:有時候我們在測試或平時練習的時候可能想把變量的值和它自身的名稱一起輸入到屏幕或者其他地方,而不是自己在代碼中寫變量名。如:

    var A = 10;

    Console.WriteLine("Var Name:A,Value:{0}", A);

    實現:實現這個功能有兩種方式。讀者不妨也思考一下有沒有其他更好的方式實現這個功能。

        a. 我首先給出通過匿名類型和反射的實現方式。

    public static class ObjectExtensions
    {
        
public static string GetVariableName<T>(this T obj)
        {
            System.Reflection.PropertyInfo[] objGetTypeGetProperties 
= obj.GetType().GetProperties();

            
if (objGetTypeGetProperties.Length == 1)
                
return objGetTypeGetProperties[0].Name;
            
else
                
throw new ArgumentException("object must contain one property");
        }
     }

    
//調用方式,我們通過匿名類型構造對象,然后通過反射獲取它內部屬性
     static void main()
     {
            
string testVar1 = "testName";
            Console.WriteLine(
new { testVar1 }.GetVariableName());

            
int testVar2 = 12345;
            Console.WriteLine(
new { testVar2 }.GetVariableName());
     }


 

    b. 通過.NET 3 中的Lamda表達式這里給出另外一個更加方便的實現方式。

  static void WriteName<T>(Expression<Func<T>> expression)
  {
       Console.WriteLine(
"{0}={1}",
                ((MemberExpression)expression.Body).Member.Name,
                expression.Compile()());
  }
  static void main()
  {
       
string testVar1 = "testName";
        WriteName(() 
=> testVar1);
  }


 

2. 字符串轉換為基本類型

    需求:在日常編程中,我們經常要在文件或用戶輸入界面中將一些字符串變量轉換為常用類型,當然我們可以用System.Convert類來完成這項工作,但如果有大量轉換工作進行的時候,這種代碼看起來很不方便,這時候我們可以通過.net的一些新的特性來很方便的完成這項工作

    實現:通過擴展方法,反射和泛型可以很方便完成這項工作。

    public static class ObjectExtensions
    {
        
static T? To<T>(this string parse)
            
where T : struct
        {
            Type t 
= typeof(T);
            
if (t == typeof(int))
            {
                
int i;
                
if (int.TryParse(parse, out i))
                    
return (T)(object)i;
                
return null;
            }
            
if (t == typeof(double))
            {
                
double i;
                
if (double.TryParse(parse, out i))
                    
return (T)(object)i;
                
return null;
            }
            
//添加其他類型的轉換代碼,如DateTime,Enum,etc;
            throw new NotSupportedException(string.Format("類型:{0}轉換不支持",t.Name));
        }
     }
     
//使用函數
     static void main()
     {
       
int? a="111".To<int>();
        
double? b="111.111".To<double>();
        
int? c="bad".To<int>();
     }


 

不過這個轉換代碼中由于有兩個類型轉換才能通過編譯,所以看起來仍然沒那么舒服,希望大家能有更好的方式實現。

 

3. WinForm編程中線程安全調用組件。

    需求:在.net 1.0的時候在其他線程中操作Win Form 主線程組件時候是可以直接操作的,但這也帶來了潛在的風險。于是在2.0以后跨線程操作你需要通過BeginInvoke來完成該項操作,但這也讓代碼看起來很拖沓,有時用戶可能僅僅只需要在線程某項操作完成后僅僅更新窗口中的某個組件,如進度條而已,卻需要另外寫一個函數去實現。

    實現: 拖過擴展函數和匿名方法可以很方便的完成窗口線程和其他線程之間的交互工作。下面給出了一個簡單的實現,當然,如果你需要更安全的調用,還需要添加一些檢測,如IsHandleCreated檢測,另外如果你需要傳遞參數,你可能需要另外定義一個委托.

    public static class ControlExtention
    {
        
public delegate void InvokeHandler();

        
public static void SafeInvoke(this Control control, InvokeHandler handler)
        {
            
if (control.InvokeRequired)
            {
                control.Invoke(handler);
            }
            
else
            {
                handler();
            }
        }
    }

   
//在form中當用戶在非form線程中需要操作form中組件對象時,調用如下
    public form:Form
    {
     
public form()
      {
        Thread t
=new  Thread(t1);
        t.start();
      }
     
void t1()
      {
            Thread.Sleep(
1000);
            
this.SafeInvoke(() => this.textBox1.Text = "Hello world");
      }
    }


 

上面只是平時碰到或者從別人那里學到的一些小的編程技巧,希望能對其他人也有所幫助。有機會的話希望能把我更多的自認為好的總結發出來。
 


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费
<button id="0mgmq"><pre id="0mgmq"></pre></button>
  • <tr id="0mgmq"></tr>
  • <abbr id="0mgmq"><source id="0mgmq"></source></abbr> <button id="0mgmq"></button>
  • 欧美日韩国产亚洲一区| 欧美日韩亚洲免费| 激情成人综合| 亚洲精品在线免费| 精品免费日产一区一区三区免费| 一区二区三区四区五区视频| 欧美日韩喷水| 午夜日韩福利| 亚洲一区二区三区加勒比| 精品无人乱码一区二区三区的优势 | 欧美一区二区三区在线播放| 精品日本一区二区三区| 国产精品10p综合二区| 欧美亚洲免费| 亚洲欧美日韩综合国产aⅴ| 亚洲精品偷拍| 国产亚洲精品久久久久婷婷瑜伽| 韩日精品视频| 亚洲小说欧美另类婷婷| 亚洲国内欧美| 国产日韩视频| 91手机在线播放| 成人在线观看av| 国产视频精品网| 久久福利电影| 视频在线99re| 午夜国产精品视频| 在线精品亚洲| 免费在线亚洲欧美| 国产九色精品| 日韩影片在线播放| 亚洲美女搞黄| 亚洲欧洲精品一区| 久久久青草婷婷精品综合日韩| 久久综合九色综合欧美狠狠| 国产精品国产精品国产专区不卡| 国产精品久久久对白| 精品国产乱码久久久久久郑州公司 | 亚洲国产精品日韩| 国产一区二区三区奇米久涩| 久久视频一区| 青青成人在线| 在线日本成人| 99c视频在线| 青青影院一区二区三区四区| 欧美日韩精品免费观看视频完整| 日韩图片一区| 久久99久久99精品蜜柚传媒| 伊人久久大香线蕉精品 | 亚洲高清精品中出| 一区二区亚洲| 动漫精品视频| 你懂的成人av| 91超碰在线免费观看| 欧美不卡三区| 亚洲国产二区| 欧美成人在线免费观看| 伊人精品在线| 免费久久99精品国产自| 国产精品久久7| 国产美女精品久久久| 国产精品成人一区二区网站软件| 久久一区免费| 欧美日韩免费观看一区| 国产成人亚洲欧美| 国产专区一区| 九九99久久| 国产精品一区视频网站| 日韩av电影免费播放| 免费在线成人av| 一区二区三区av| 国产精品日韩一区二区免费视频| 午夜视频一区| 欧美精品一区二区三区四区五区| 亚洲精品裸体| 亚洲v欧美v另类v综合v日韩v| 国产亚洲毛片在线| 亚洲欧美国产精品桃花| 国产91精品入口17c| 亚洲二区视频| 亚洲日本japanese丝袜| 粉嫩高清一区二区三区精品视频 | 欧美日韩成人一区二区三区| 亚洲一区二区三区精品动漫| 在线不卡视频一区二区| 国产中文一区二区| 午夜一级久久| 亚洲国产一区二区在线| 夜夜爽99久久国产综合精品女不卡 | 亚洲欧美精品在线观看| 国产精品果冻传媒潘| 亚洲久色影视| 欧美高清一区二区| 台湾成人av| 你懂的视频在线一区二区| 不卡日韩av| 亚洲永久免费精品| 亚洲精选在线| 亚洲亚洲精品三区日韩精品在线视频| 日本在线一区| 欧美日韩亚洲一区二区三区在线观看| 久热精品在线| 久热这里只精品99re8久| 一区二区三区欧美在线| 亚洲高清不卡一区| 亚洲天堂激情| 国内精品久久久久久久影视麻豆 | 久久久久久精| 精品亚洲第一| 美国av一区二区三区| 久久视频在线观看中文字幕| 国产精品乱码一区二区三区| 99re国产在线播放| 97免费高清电视剧观看| 99热99热| 国产麻豆一区二区三区在线观看| 粉嫩av一区二区三区免费观看| 久久青青草原一区二区| 美女精品国产| 97自拍视频| 国产亚洲自拍偷拍| 久久精品日韩| 亚洲精品一区二| 在线视频不卡一区二区三区| 欧美久久久久| 亚洲国产欧美国产综合一区 | 在线亚洲激情| 米奇777在线欧美播放| 久久九九国产| 国产乱码精品一区二区三区日韩精品| 国产伦精品一区二区三毛| 蜜桃av色综合| 在线国产99| 国产欧美日韩亚洲| 99精品国产一区二区| 久久综合九九| 欧美福利视频| 国产精品老牛| 国产在线精品一区| 亚洲第一在线综合在线| 在线观看日韩av电影| 蜜桃av噜噜一区二区三区| 九九99久久| 国产精品国产亚洲精品看不卡15| 亚洲国产欧美不卡在线观看| 99国产在线视频| 日韩欧美亚洲区| 夜夜精品视频| 久久五月天婷婷| 欧美日韩在线精品一区二区三区| 国产麻豆综合| 日本在线高清视频一区| 激情成人亚洲| 国产亚洲情侣一区二区无| 一区二区三区久久网| av不卡免费看| 免费99视频| 亚洲最黄网站| 欧美三级华人主播| 亚洲国内在线| 日本成人三级| 国产亚洲欧美一区二区| 美国av一区二区三区| 99精品福利视频| 日韩av高清| 免费在线一区二区| 中文字幕一区综合| 91免费观看| 国产一区二区三区四区hd| 老司机免费视频久久| 欧美日韩综合久久| 麻豆成人av| 亚洲综合精品四区| 欧美在线1区| 久久国产精品久久精品国产| 亚洲免费黄色| 日本一区二区三区www| 久久综合一区| 亚洲第一毛片| 亚洲精品自在在线观看| 91国产在线播放| 伊人成人网在线看| 亚洲v国产v在线观看| 国产美女99p| 亚洲在线电影| 一区在线播放| 欧美1区3d| 秋霞毛片久久久久久久久| 久久久av水蜜桃| 99精品视频免费全部在线| 一区二区三区四区欧美| 久久亚洲高清| 国产精品视频一区二区三区经| 亚洲精品一区二区三区av| 欧美大片专区| 亚洲欧洲日本国产| 欧美系列一区| 免费国产在线精品一区二区三区| 91丨九色丨国产| 久久一区中文字幕|