C#"采用"块 [英] C# "using" blocks

查看:149
本文介绍了C#"采用"块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类似下面的代码......有人在这里提及的是,Web客户端,流和StreamReader的对象可以使用的块中受益。两个简单的问题:



1:这将如何小片段看起来与使用块?我已经在做我自己的研究使资源链接,没有任何问题都很好,但它会是更快,更容易只看到一个例子,我会从理解它。



2:我想在良好的编码标准的习惯来获得,将有助于如果我知道一些关于为何使用块是更好的... ...它只是让你不必担心关闭或有没有更多的理由? !谢谢



  Web客户端的客户端=新的WebClient(); 
流流= client.OpenRead(originGetterURL);
StreamReader的读者=新的StreamReader(流);

JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(reader.ReadLine());
串的encryptionKey =(字符串)jObject [钥匙];
串originURL =(字符串)jObject [origin_url];

stream.Close()
reader.Close()


解决方案

 使用(VAR的客户=新的WebClient())使用
(VAR流= client.OpenRead(originGetterURL))
使用(VAR读者=新的StreamReader(流))
{
VAR jObject = Newtonsoft.Json.Linq.JObject.Parse(reader.ReadLine());
VAR的encryptionKey =(字符串)jObject [钥匙];
VAR originURL =(字符串)jObject [origin_url];
}

或干脆:

 使用(VAR的客户=新的WebClient())
{
VAR JSON = client.DownloadString(originGetterURL);
VAR jObject = Newtonsoft.Json.Linq.JObject.Parse(JSON);
VAR的encryptionKey =(字符串)jObject [钥匙];
VAR originURL =(字符串)jObject [origin_url];
}


I've got something like the code below...someone here mentioned that the WebClient, Stream, and StreamReader objects could all benefit from using blocks. Two easy questions:

1: How would this little snippet look with using blocks? I've no problem with doing my own research so resource links are fine but it'd be quicker and easier to just see an example and I'll understand it from that.

2: I'd like to get in the habit of good coding standards, would help if I knew a little about the reasons why using blocks are better...is it just so you don't have to worry about closing or are there more reasons? Thanks!

WebClient client = new WebClient();
Stream stream = client.OpenRead(originGetterURL);
StreamReader reader = new StreamReader(stream);

JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(reader.ReadLine());
string encryptionKey = (string)jObject["key"];
string originURL = (string)jObject["origin_url"];

stream.Close()
reader.Close()

解决方案

using (var client = new WebClient())
using (var stream = client.OpenRead(originGetterURL))
using (var reader = new StreamReader(stream))
{
    var jObject = Newtonsoft.Json.Linq.JObject.Parse(reader.ReadLine());
    var encryptionKey = (string)jObject["key"];
    var originURL = (string)jObject["origin_url"];
}

or simply:

using (var client = new WebClient())
{
    var json = client.DownloadString(originGetterURL);
    var jObject = Newtonsoft.Json.Linq.JObject.Parse(json);
    var encryptionKey = (string)jObject["key"];
    var originURL = (string)jObject["origin_url"];
}

这篇关于C#"采用"块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆