static void Main(string[] args) { int i = 100; object j = i;//装箱 就是把值类型转换成引用类型 int k = (int)j;//拆箱 就是把引用类型转换成值类型 Console.WriteLine("i={0},j={1},k={2}", i,j,k); // 输出结果:i=100 j=100 k=100 }
控制台程序 装箱拆箱 回顾基础,了解各个性能原理。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Aync异步:异步方法
可以看到调用RequestPostWebAsync() 方法会解析代码,然后返回一个Task<JObject>对象。最耗性能的地方在为PostAsync实例分配内存并解析代码。方法中返回一个Task对象,因此调用者可以await解析工作,然后释放UI线程使得可以响应用户的输入。
/// <summary> /// 异步方式 请求解析URL返回数据 post /// </summary> /// <param name="URL"></param> public async Task<JObject> RequestPostWebAsync(string URL, object postvalues) { var result = ""; try { using (HttpClient http = new HttpClient()) { HttpContent content = new StringContent(JsonConvert.SerializeObject(postvalues).ToString(), Encoding.UTF8, "text/json"); var response = await http.PostAsync(URL, content); //确保HTTP成功状态值 response.EnsureSuccessStatusCode(); result = await response.Content.ReadAsStringAsync(); } } catch (WebException e) { logger.LogError(e.Message); } var jsonVal = JObject.Parse(result); return jsonVal; }