c# 靜態(tài)類的使用場景
判斷這個很簡單,就是從內(nèi)存的優(yōu)化方面去考慮.因為靜態(tài)和非靜態(tài)的不同的地方,就是靜態(tài)的從程序一啟動就會一直占用內(nèi)存,而非靜態(tài)的只在使用后(實例化)后才會占用內(nèi)存.但是每實例化個一個對象時又會另外占用內(nèi)存. 舉個例子,比如說一個數(shù)據(jù)庫的連接字段(STRING).因為要經(jīng)常使用到它,這時我們可以用STATIC.但是如果這時用非靜態(tài)的話那就不合算了,因為每次調(diào)用到它時,又實例化一次.這樣相比來說占用內(nèi)存就比較大了.不劃算. 像一個登錄后臺的方法,你只在登陸時候調(diào)用一次,就沒有必要做成靜態(tài)的了.那樣一直駐存在內(nèi)存中.在大型項目中,你如果都使用靜態(tài)的那得要多少內(nèi)存去支撐呀.嘿嘿 簡單點,就是它經(jīng)常要被調(diào)用時,就用靜態(tài)的.相反則用非靜態(tài)的.
那也就是說,公共方法就設(shè)置為靜態(tài)的方法唄。果然是的,看經(jīng)常用的comm類就是靜態(tài)的Static
public class fnComm
{
public static JObject Post(HttpClient myhttp, string url, JObject json)
{
HttpContent content = new StringContent(JsonConvert.SerializeObject(json), Encoding.UTF8, "application/json");
var message = Task<HttpResponseMessage>.Run<HttpResponseMessage>(() =>
{
return myhttp.PostAsync(url, content);
});
message.Wait();
//接收返回得信息
if (message.Result.IsSuccessStatusCode)
{
var s = Task.Run(() =>
{
return message.Result.Content.ReadAsStringAsync();
});
s.Wait();
return JObject.Parse(s.Result);
}
else
{
throw new Exception("StatusCode:" + message.Result.StatusCode.ToString());
}
}
public static byte[] ConvertToByteAry(object obj)
{
var j = JsonConvert.SerializeObject(obj);
var ary = System.Text.Encoding.UTF8.GetBytes(j);
return ary;
}
/// <summary>
/// datetime轉(zhuǎn)換為unixtime
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public static int TimeToUnixTime(System.DateTime time)
{
return (int)(time - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds;
}
public static string GenerateTransId(int i)
{
string transId = DateTime.Now.ToString("yyyyMMddHHmmss");
int l = i - 14;
return transId + CreateRandCode(l);
}
public static string CreateRandCode(int codeLen)
{
string codeSerial = "1,2,3,4,5,6,7,a,c,d,e,f,h,i,j,k,m,n,p,r,s,t,A,C,D,E,F,G,H,J,K,M,N,P,Q,R,S,U,V,W,X,Y,Z";
if (codeLen == 0)
{
codeLen = 16;
}
string[] arr = codeSerial.Split(',');
string code = "";
int randValue = -1;
Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < codeLen; i++)
{
randValue = rand.Next(0, arr.Length - 1);
code += arr[randValue];
}
return code;
}
public static string GetStringFromList(List<string> list)
{
StringBuilder sb = new StringBuilder();
string strReturn;
if (list.Count > 0)
{
foreach (string item in list)
{
sb.AppendFormat("'{0}',", item);
}
strReturn = sb.ToString(0, sb.Length - 1);
}
else
{
strReturn = "''";
}
return strReturn;
}
}
以上就是c# 靜態(tài)類的使用場景的詳細(xì)內(nèi)容,更多關(guān)于c# 靜態(tài)類的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Unity編輯器資源導(dǎo)入處理函數(shù)OnPostprocessTexture實例深入解析
這篇文章主要為大家介紹了Unity編輯器資源導(dǎo)入處理函數(shù)OnPostprocessTexture實例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
C#自定義繁體和簡體字庫實現(xiàn)中文繁體和簡體之間轉(zhuǎn)換的方法
這篇文章主要介紹了C#自定義繁體和簡體字庫實現(xiàn)中文繁體和簡體之間轉(zhuǎn)換的方法,通過自定義繁簡轉(zhuǎn)換字庫實現(xiàn)繁體與簡體轉(zhuǎn)換的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
C#中數(shù)組初始化、反轉(zhuǎn)和排序用法實例
這篇文章主要介紹了C#中數(shù)組初始化、反轉(zhuǎn)和排序用法,涉及C#中數(shù)組常見的定義、初始化、排序等操作技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04

