C# 之 using & lock & checked & unchecked语句
【摘要】 C# 之 using & lock & checked & unchecked 语句
一.using语句
三种常见的用法:
1. 引入命名空间 2.重命名
using System; //引入命名空间
using myMatht = System.Math; //重命名
namespace CSharpDemo
{ class Prog...
C# 之 using & lock & checked & unchecked 语句
一.using语句
三种常见的用法:
1. 引入命名空间
2.重命名
using System; //引入命名空间
using myMatht = System.Math; //重命名
namespace CSharpDemo
{ class Program { static void Main(string[] args) { int a = -1; //使用 Console.WriteLine(myMatht.Abs(a)); } }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3.using语句获取一个或多个资源,执行一个语句,然后释放该资源
using System.IO;
namespace CSharpDemo
{ class Program { static void Main(string[] args) { using (TextWriter w = File.CreateText("test.txt"))//获取资源 { w.WriteLine("写入数据"); } } }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
二.lock语句
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。
lock 语句获取给定对象的互斥 lock,执行语句块,然后释放 lock。 持有 lock 时,持有 lock 的线程可以再次获取并释放 lock。 阻止任何其他线程获取 lock 并等待释放 lock。
lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。
decimal Account; void ChangeValue(decimal money) { lock (this) { if (Account > money) { Account += money; Console.WriteLine("操作后账户余额:" + Account); } } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
PS:
1.lock语句中锁定的必须是引用类型的对象,不能是值类型
2.为了避免死锁,lock的对象需要是private对象
三.checked语句和unchecked语句
checked 语句和unchecked 语句用于控制整型算术运算和转换的溢出检查上下文。
checked 语句使块中的所有表达式都在一个选中的上下文中进行计算,而unchecked 语句使它们在一个未选中的上下文中进行计算,功能与checked和unchecked运算符相同。
class Program { static void Main(string[] args) { int i = int.MaxValue; checked { Console.WriteLine(i + 1); } } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
运行会抛异常
class Program { static void Main(string[] args) { int i = int.MaxValue; Console.WriteLine(i + 1); unchecked { Console.WriteLine(i + 1); } } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
不校验或者是unchecked的输出结果:
文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。
原文链接:czhenya.blog.csdn.net/article/details/104791572
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)