在C#中使用块的目的是什么?它与局部变量有什么不同?
只是想知道这意味着什么?我在网上看过很多具有以下语法的教程:
using (SqlCeCommand cmd2 = new SqlCeCommand("SELECT city FROM cities JOIN states ON states.id=cities.state WHERE states.state='" + read.GetString(0) + "'", con))
{
SqlCeDataReader readCities = cmd2.ExecuteReader();
while (readCities.Read())
{
parent.Nodes.Add(readCities.GetString(0));
}
}
Run Code Online (Sandbox Code Playgroud)
为什么用它?我尝试搜索Google,但它提供了'using'关键字,用于包含dll和其他文件.
我想知道是否有必要Close()在下列情况下打电话(如果没有必要,为什么?)
using (var file = System.IO.File.OpenText(myFilePath))
{
...
}
Run Code Online (Sandbox Code Playgroud)
我认为在以下情况下是必要的
StreamWriter file2 = new System.IO.StreamWriter(myFilePath);
newFileContents.ForEach(file2.WriteLine);
file2.Close();
Run Code Online (Sandbox Code Playgroud)
这是对的吗?
编辑:
我认为我的问题很接近() - 具体,可能是阅读和写作之间的区别....
我是C#的新手,直到我在Depth中找到了C#,直到我发现了C#,在Delphi中有一个try {}语句也在C#中实现.
但是,我看到你们中的一些人提到"使用(){}比尝试{}更好".
这是一个例子:
//This might throw an exception
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(ip, port);
//Try statement
try
{
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(ip, port);
catch
{
}
//using(){}
using(sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
{
sock.Connect(ip, port);
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
如果在"using"语句中发生异常会发生什么?
什么时候应该使用"使用"而不是"尝试",何时"尝试"使用"使用"?
什么是"使用"声明的目的?
提前致谢!
我看到它用过,我在这里和那里读到它,它与内存管理有关.问题是,您怎么知道何时应该使用它?如果你不使用变量或实例会导致问题,你如何区分?
确切的重复:什么是C#使用块,我为什么要使用它?
我想覆盖 exe 中的字节。
所以我需要生成一个随机字符串,将其转换,然后将其写入exe。
我需要以这种格式覆盖你在那里看到的 4 个十六进制字符串 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12) 需要破折号,所以这对我来说也是一个问题。
这是第一个字符串的位置。


我完全不知道如何开始这个,我如何用随机字符串以正确的格式覆盖这 4 个字符串(十六进制,所以随机只能是 0123456789abcdef)
任何帮助深表感谢。
我读了这篇文档,但我仍然感到困惑.
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
Run Code Online (Sandbox Code Playgroud)
在代码中,是否意味着我们引入了一个名为Font类的新实例font1.但是,此实例仅在大括号内存活.在代码中我们可以再次实例化,font1但这将是一个完全不同的实例,因为前一个font1是disposed.
它是否正确?那么目的是什么?我们可以重新分配不同的值font1而不处理前一个值?