.NET常用工具类(Utils.cs)
生活随笔
收集整理的這篇文章主要介紹了
.NET常用工具类(Utils.cs)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
????????/**////?<summary>
????????///?刪除字符串尾部的回車/換行/空格
????????///?</summary>
????????///?<param?name="str"></param>
????????///?<returns></returns>
????????public?static?string?RTrim(string?str)
????????{
????????????for?(int?i?=?str.Length;?i?>=?0;?i--)
????????????{
????????????????if?(str[i].Equals("?")?||?str[i].Equals("\r")?||?str[i].Equals("\n"))
????????????????{
????????????????????str.Remove(i,?1);
????????????????}
????????????}
????????????return?str;
????????}
????????/**////?<summary>
????????///?返回文件是否存在
????????///?</summary>
????????///?<param?name="filename">文件名</param>
????????///?<returns>是否存在</returns>
????????public?static?bool?FileExists(string?filename)
????????{
????????????return?System.IO.File.Exists(filename);
????????}
????????/**////?<summary>
????????///?以指定的ContentType輸出指定文件文件
????????///?</summary>
????????///?<param?name="filepath">文件路徑</param>
????????///?<param?name="filename">輸出的文件名</param>
????????///?<param?name="filetype">將文件輸出時設(shè)置的ContentType</param>
????????public?static?void?ResponseFile(string?filepath,?string??filename,?string?filetype)
????????{
????????????Stream?iStream?=?null;
????????????//?緩沖區(qū)為10k
????????????byte[]?buffer?=?new?Byte[10000];
????????????//?文件長度
????????????int?length;
????????????//?需要讀的數(shù)據(jù)長度
????????????long?dataToRead;
????????????try
????????????{
????????????????//?打開文件
????????????????iStream?=?new?FileStream(filepath,?FileMode.Open,?FileAccess.Read,?FileShare.ReadWrite);
????????????????//?需要讀的數(shù)據(jù)長度
????????????????dataToRead?=?iStream.Length;
????????????????HttpContext.Current.Response.ContentType?=?filetype;
????????????????HttpContext.Current.Response.AddHeader("Content-Disposition",?"attachment;filename="?+?Utils.UrlEncode(filename.Trim()).Replace("+",?"?"));
????????????????while?(dataToRead?>?0)
????????????????{
????????????????????//?檢查客戶端是否還處于連接狀態(tài)
????????????????????if?(HttpContext.Current.Response.IsClientConnected)
????????????????????{
????????????????????????length?=?iStream.Read(buffer,?0,?10000);
????????????????????????HttpContext.Current.Response.OutputStream.Write(buffer,?0,?length);
????????????????????????HttpContext.Current.Response.Flush();
????????????????????????buffer?=?new?Byte[10000];
????????????????????????dataToRead?=?dataToRead?-?length;
????????????????????}
????????????????????else
????????????????????{
????????????????????????//?如果不再連接則跳出死循環(huán)
????????????????????????dataToRead?=?-1;
????????????????????}
????????????????}
????????????}
????????????catch?(Exception?ex)
????????????{
????????????????HttpContext.Current.Response.Write("Error?:?"?+?ex.Message);
????????????}
????????????finally
????????????{
????????????????if?(iStream?!=?null)
????????????????{
????????????????????//?關(guān)閉文件
????????????????????iStream.Close();
????????????????}
????????????}
????????????HttpContext.Current.Response.End();
????????}
????????/**////?<summary>
????????///?判斷文件名是否為瀏覽器可以直接顯示的圖片文件名
????????///?</summary>
????????///?<param?name="filename">文件名</param>
????????///?<returns>是否可以直接顯示</returns>
????????public?static?bool?IsImgFilename(string?filename)
????????{
????????????filename?=?filename.Trim();
????????????if?(filename.EndsWith(".")?||?filename.IndexOf(".")?==?-1)
????????????{
????????????????return?false;
????????????}
????????????string?extname?=?filename.Substring(filename.LastIndexOf(".")?+?1).ToLower();
????????????return?(extname?==?"jpg"?||?extname?==?"jpeg"?||?extname?==?"png"?||?extname?==?"bmp"?||?extname?==?"gif");
????????}
????????/**////?<summary>
????????///?MD5函數(shù)
????????///?</summary>
????????///?<param?name="str">原始字符串</param>
????????///?<returns>MD5結(jié)果</returns>
????????public?static?string?MD5(string?str)
????????{
????????????byte[]?b?=?Encoding.Default.GetBytes(str);
????????????b?=?new?MD5CryptoServiceProvider().ComputeHash(b);
????????????string?ret?=?"";
????????????for(int?i?=?0;?i?<?b.Length;?i++)
????????????????ret?+=?b[i].ToString("x").PadLeft(2,'0');
????????????return?ret;
????????}
????????/**////?<summary>
????????///?SHA256函數(shù)
????????///?</summary>
????????///?///?<param?name="str">原始字符串</param>
????????///?<returns>SHA256結(jié)果</returns>
????????public?static?string?SHA256(string?str)
????????{
????????????byte[]?SHA256Data?=?Encoding.UTF8.GetBytes(str);
????????????SHA256Managed?Sha256?=?new?SHA256Managed();
????????????byte[]?Result?=?Sha256.ComputeHash(SHA256Data);
????????????return?Convert.ToBase64String(Result);??//返回長度為44字節(jié)的字符串
????????}
????????/**////?<summary>
????????///?檢測是否符合email格式
????????///?</summary>
????????///?<param?name="strEmail">要判斷的email字符串</param>
????????///?<returns>判斷結(jié)果</returns>
????????public?static?bool?IsValidEmail(string?strEmail)
????????{
????????????return?Regex.IsMatch(strEmail,?@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
????????}
????????public?static?bool?IsValidDoEmail(string?strEmail)
????????{
????????????return?Regex.IsMatch(strEmail,?@"^@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
????????}
????????/**////?<summary>
????????///?檢測是否是正確的Url
????????///?</summary>
????????///?<param?name="strUrl">要驗證的Url</param>
????????///?<returns>判斷結(jié)果</returns>
????????public?static?bool?IsURL(string?strUrl)
????????{
????????????return?Regex.IsMatch(strUrl,?@"^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");
????????}
????????public?static?string?GetEmailHostName(string?strEmail)
????????{
????????????if?(strEmail.IndexOf("@")?<?0)
????????????{
????????????????return?"";
????????????}
????????????return?strEmail.Substring(strEmail.LastIndexOf("@")).ToLower();
????????}
????????/**////?<summary>
????????///?檢測是否有Sql危險字符
????????///?</summary>
????????///?<param?name="str">要判斷字符串</param>
????????///?<returns>判斷結(jié)果</returns>
????????public?static?bool?IsSafeSqlString(string?str)
????????{
????????????return?!Regex.IsMatch(str,?@"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");?
????????}
????????/**////?<summary>
????????///?替換回車換行符為html換行符
????????///?</summary>
????????public?static?string?StrFormat(string?str)
????????{
????????????string?str2;
????????????if?(str?==?null)
????????????{
????????????????str2?=?"";
????????????}
????????????else
????????????{
????????????????str?=?str.Replace("\r\n",?"<br?/>");
????????????????str?=?str.Replace("\n",?"<br?/>");
????????????????str2?=?str;
????????????}
????????????return?str2;
????????}
????????/**////?<summary>
????????///?轉(zhuǎn)換為簡體中文
????????///?</summary>
????????public?static?string?ToSChinese(string?str)
????????{
????????????return?Strings.StrConv(str,?VbStrConv.SimplifiedChinese,?0)?;
????????}
????????/**////?<summary>
????????///?轉(zhuǎn)換為繁體中文
????????///?</summary>
????????public?static?string?ToTChinese(string?str)
????????{
????????????return?Strings.StrConv(str,?VbStrConv.TraditionalChinese,?0);
????????}
????????/**////?<summary>
????????///?返回?HTML?字符串的編碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>編碼結(jié)果</returns>
????????public?static?string?HtmlEncode(string?str)
????????{
????????????return?HttpUtility.HtmlEncode(str);
????????}
????????/**////?<summary>
????????///?返回?HTML?字符串的解碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>解碼結(jié)果</returns>
????????public?static?string?HtmlDecode(string?str)
????????{
????????????return?HttpUtility.HtmlDecode(str);
????????}
????????/**////?<summary>
????????///?返回?URL?字符串的編碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>編碼結(jié)果</returns>
????????public?static?string?UrlEncode(string?str)
????????{
????????????return?HttpUtility.UrlEncode(str);
????????}
????????/**////?<summary>
????????///?返回?URL?字符串的編碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>解碼結(jié)果</returns>
????????public?static?string?UrlDecode(string?str)
????????{
????????????return?HttpUtility.UrlDecode(str);
????????}
????????/**////?<summary>
????????///?寫cookie值
????????///?</summary>
????????///?<param?name="strName">名稱</param>
????????///?<param?name="strValue">值</param>
????????///?<param?name="strValue">過期時間(分鐘)</param>
????????public?static?void?WriteCookie(string?strName,?string?strValue,?int?expires)
????????{
????????????HttpCookie?cookie?=?HttpContext.Current.Request.Cookies[strName];
????????????if?(cookie?==?null)
????????????{
????????????????cookie?=?new?HttpCookie(strName);
????????????}
????????????cookie.Value?=?strValue;
????????????cookie.Expires?=?DateTime.Now.AddMinutes(expires);
????????????HttpContext.Current.Response.AppendCookie(cookie);
????????}
????????/**////?<summary>
????????///?讀cookie值
????????///?</summary>
????????///?<param?name="strName">名稱</param>
????????///?<returns>cookie值</returns>
????????public?static?string?GetCookie(string?strName)
????????{
????????????if?(HttpContext.Current.Request.Cookies?!=?null?&&?HttpContext.Current.Request.Cookies[strName]?!=?null)
????????????{
????????????????return?HttpContext.Current.Request.Cookies[strName].Value.ToString();
????????????}
????????????return?"";
????????}
????????/**////?<summary>
????????///?過濾HTML中的不安全標簽
????????///?</summary>
????????///?<param?name="content"></param>
????????///?<returns></returns>
????????public?static?string?RemoveUnsafeHtml(string?content)
????????{
????????????content?=?Regex.Replace(content,?@"(\<|\s+)o([a-z]+\s?=)",?"$1$2",?RegexOptions.IgnoreCase);
????????????content?=?Regex.Replace(content,?@"(script|frame|form|meta|behavior|style)([\s|:|>])+",?"$1.$2",?RegexOptions.IgnoreCase);
????????????return?content;
????????}
????????///?刪除字符串尾部的回車/換行/空格
????????///?</summary>
????????///?<param?name="str"></param>
????????///?<returns></returns>
????????public?static?string?RTrim(string?str)
????????{
????????????for?(int?i?=?str.Length;?i?>=?0;?i--)
????????????{
????????????????if?(str[i].Equals("?")?||?str[i].Equals("\r")?||?str[i].Equals("\n"))
????????????????{
????????????????????str.Remove(i,?1);
????????????????}
????????????}
????????????return?str;
????????}
????????/**////?<summary>
????????///?返回文件是否存在
????????///?</summary>
????????///?<param?name="filename">文件名</param>
????????///?<returns>是否存在</returns>
????????public?static?bool?FileExists(string?filename)
????????{
????????????return?System.IO.File.Exists(filename);
????????}
????????/**////?<summary>
????????///?以指定的ContentType輸出指定文件文件
????????///?</summary>
????????///?<param?name="filepath">文件路徑</param>
????????///?<param?name="filename">輸出的文件名</param>
????????///?<param?name="filetype">將文件輸出時設(shè)置的ContentType</param>
????????public?static?void?ResponseFile(string?filepath,?string??filename,?string?filetype)
????????{
????????????Stream?iStream?=?null;
????????????//?緩沖區(qū)為10k
????????????byte[]?buffer?=?new?Byte[10000];
????????????//?文件長度
????????????int?length;
????????????//?需要讀的數(shù)據(jù)長度
????????????long?dataToRead;
????????????try
????????????{
????????????????//?打開文件
????????????????iStream?=?new?FileStream(filepath,?FileMode.Open,?FileAccess.Read,?FileShare.ReadWrite);
????????????????//?需要讀的數(shù)據(jù)長度
????????????????dataToRead?=?iStream.Length;
????????????????HttpContext.Current.Response.ContentType?=?filetype;
????????????????HttpContext.Current.Response.AddHeader("Content-Disposition",?"attachment;filename="?+?Utils.UrlEncode(filename.Trim()).Replace("+",?"?"));
????????????????while?(dataToRead?>?0)
????????????????{
????????????????????//?檢查客戶端是否還處于連接狀態(tài)
????????????????????if?(HttpContext.Current.Response.IsClientConnected)
????????????????????{
????????????????????????length?=?iStream.Read(buffer,?0,?10000);
????????????????????????HttpContext.Current.Response.OutputStream.Write(buffer,?0,?length);
????????????????????????HttpContext.Current.Response.Flush();
????????????????????????buffer?=?new?Byte[10000];
????????????????????????dataToRead?=?dataToRead?-?length;
????????????????????}
????????????????????else
????????????????????{
????????????????????????//?如果不再連接則跳出死循環(huán)
????????????????????????dataToRead?=?-1;
????????????????????}
????????????????}
????????????}
????????????catch?(Exception?ex)
????????????{
????????????????HttpContext.Current.Response.Write("Error?:?"?+?ex.Message);
????????????}
????????????finally
????????????{
????????????????if?(iStream?!=?null)
????????????????{
????????????????????//?關(guān)閉文件
????????????????????iStream.Close();
????????????????}
????????????}
????????????HttpContext.Current.Response.End();
????????}
????????/**////?<summary>
????????///?判斷文件名是否為瀏覽器可以直接顯示的圖片文件名
????????///?</summary>
????????///?<param?name="filename">文件名</param>
????????///?<returns>是否可以直接顯示</returns>
????????public?static?bool?IsImgFilename(string?filename)
????????{
????????????filename?=?filename.Trim();
????????????if?(filename.EndsWith(".")?||?filename.IndexOf(".")?==?-1)
????????????{
????????????????return?false;
????????????}
????????????string?extname?=?filename.Substring(filename.LastIndexOf(".")?+?1).ToLower();
????????????return?(extname?==?"jpg"?||?extname?==?"jpeg"?||?extname?==?"png"?||?extname?==?"bmp"?||?extname?==?"gif");
????????}
????????/**////?<summary>
????????///?MD5函數(shù)
????????///?</summary>
????????///?<param?name="str">原始字符串</param>
????????///?<returns>MD5結(jié)果</returns>
????????public?static?string?MD5(string?str)
????????{
????????????byte[]?b?=?Encoding.Default.GetBytes(str);
????????????b?=?new?MD5CryptoServiceProvider().ComputeHash(b);
????????????string?ret?=?"";
????????????for(int?i?=?0;?i?<?b.Length;?i++)
????????????????ret?+=?b[i].ToString("x").PadLeft(2,'0');
????????????return?ret;
????????}
????????/**////?<summary>
????????///?SHA256函數(shù)
????????///?</summary>
????????///?///?<param?name="str">原始字符串</param>
????????///?<returns>SHA256結(jié)果</returns>
????????public?static?string?SHA256(string?str)
????????{
????????????byte[]?SHA256Data?=?Encoding.UTF8.GetBytes(str);
????????????SHA256Managed?Sha256?=?new?SHA256Managed();
????????????byte[]?Result?=?Sha256.ComputeHash(SHA256Data);
????????????return?Convert.ToBase64String(Result);??//返回長度為44字節(jié)的字符串
????????}
????????/**////?<summary>
????????///?檢測是否符合email格式
????????///?</summary>
????????///?<param?name="strEmail">要判斷的email字符串</param>
????????///?<returns>判斷結(jié)果</returns>
????????public?static?bool?IsValidEmail(string?strEmail)
????????{
????????????return?Regex.IsMatch(strEmail,?@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
????????}
????????public?static?bool?IsValidDoEmail(string?strEmail)
????????{
????????????return?Regex.IsMatch(strEmail,?@"^@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
????????}
????????/**////?<summary>
????????///?檢測是否是正確的Url
????????///?</summary>
????????///?<param?name="strUrl">要驗證的Url</param>
????????///?<returns>判斷結(jié)果</returns>
????????public?static?bool?IsURL(string?strUrl)
????????{
????????????return?Regex.IsMatch(strUrl,?@"^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");
????????}
????????public?static?string?GetEmailHostName(string?strEmail)
????????{
????????????if?(strEmail.IndexOf("@")?<?0)
????????????{
????????????????return?"";
????????????}
????????????return?strEmail.Substring(strEmail.LastIndexOf("@")).ToLower();
????????}
????????/**////?<summary>
????????///?檢測是否有Sql危險字符
????????///?</summary>
????????///?<param?name="str">要判斷字符串</param>
????????///?<returns>判斷結(jié)果</returns>
????????public?static?bool?IsSafeSqlString(string?str)
????????{
????????????return?!Regex.IsMatch(str,?@"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");?
????????}
????????/**////?<summary>
????????///?替換回車換行符為html換行符
????????///?</summary>
????????public?static?string?StrFormat(string?str)
????????{
????????????string?str2;
????????????if?(str?==?null)
????????????{
????????????????str2?=?"";
????????????}
????????????else
????????????{
????????????????str?=?str.Replace("\r\n",?"<br?/>");
????????????????str?=?str.Replace("\n",?"<br?/>");
????????????????str2?=?str;
????????????}
????????????return?str2;
????????}
????????/**////?<summary>
????????///?轉(zhuǎn)換為簡體中文
????????///?</summary>
????????public?static?string?ToSChinese(string?str)
????????{
????????????return?Strings.StrConv(str,?VbStrConv.SimplifiedChinese,?0)?;
????????}
????????/**////?<summary>
????????///?轉(zhuǎn)換為繁體中文
????????///?</summary>
????????public?static?string?ToTChinese(string?str)
????????{
????????????return?Strings.StrConv(str,?VbStrConv.TraditionalChinese,?0);
????????}
????????/**////?<summary>
????????///?返回?HTML?字符串的編碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>編碼結(jié)果</returns>
????????public?static?string?HtmlEncode(string?str)
????????{
????????????return?HttpUtility.HtmlEncode(str);
????????}
????????/**////?<summary>
????????///?返回?HTML?字符串的解碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>解碼結(jié)果</returns>
????????public?static?string?HtmlDecode(string?str)
????????{
????????????return?HttpUtility.HtmlDecode(str);
????????}
????????/**////?<summary>
????????///?返回?URL?字符串的編碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>編碼結(jié)果</returns>
????????public?static?string?UrlEncode(string?str)
????????{
????????????return?HttpUtility.UrlEncode(str);
????????}
????????/**////?<summary>
????????///?返回?URL?字符串的編碼結(jié)果
????????///?</summary>
????????///?<param?name="str">字符串</param>
????????///?<returns>解碼結(jié)果</returns>
????????public?static?string?UrlDecode(string?str)
????????{
????????????return?HttpUtility.UrlDecode(str);
????????}
????????/**////?<summary>
????????///?寫cookie值
????????///?</summary>
????????///?<param?name="strName">名稱</param>
????????///?<param?name="strValue">值</param>
????????///?<param?name="strValue">過期時間(分鐘)</param>
????????public?static?void?WriteCookie(string?strName,?string?strValue,?int?expires)
????????{
????????????HttpCookie?cookie?=?HttpContext.Current.Request.Cookies[strName];
????????????if?(cookie?==?null)
????????????{
????????????????cookie?=?new?HttpCookie(strName);
????????????}
????????????cookie.Value?=?strValue;
????????????cookie.Expires?=?DateTime.Now.AddMinutes(expires);
????????????HttpContext.Current.Response.AppendCookie(cookie);
????????}
????????/**////?<summary>
????????///?讀cookie值
????????///?</summary>
????????///?<param?name="strName">名稱</param>
????????///?<returns>cookie值</returns>
????????public?static?string?GetCookie(string?strName)
????????{
????????????if?(HttpContext.Current.Request.Cookies?!=?null?&&?HttpContext.Current.Request.Cookies[strName]?!=?null)
????????????{
????????????????return?HttpContext.Current.Request.Cookies[strName].Value.ToString();
????????????}
????????????return?"";
????????}
????????/**////?<summary>
????????///?過濾HTML中的不安全標簽
????????///?</summary>
????????///?<param?name="content"></param>
????????///?<returns></returns>
????????public?static?string?RemoveUnsafeHtml(string?content)
????????{
????????????content?=?Regex.Replace(content,?@"(\<|\s+)o([a-z]+\s?=)",?"$1$2",?RegexOptions.IgnoreCase);
????????????content?=?Regex.Replace(content,?@"(script|frame|form|meta|behavior|style)([\s|:|>])+",?"$1.$2",?RegexOptions.IgnoreCase);
????????????return?content;
????????}
轉(zhuǎn)載于:https://www.cnblogs.com/LiJun027/archive/2007/12/28/1018978.html
總結(jié)
以上是生活随笔為你收集整理的.NET常用工具类(Utils.cs)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel vb ppap_vb是什么平
- 下一篇: uefi+guid分区与legacy+m