C#笔记(表达式、运算符和语句)

1 运算符和表达式

运算符是一个符号,它表示 返回 单个结果的操作
操作数是指作为运算符输入的 数据元素,可以作为操作数的结构有:

  • 字面量:源代码中键入的数字或字符串,表示一个指定类型的明确、固定的值
  • 常量
  • 变量
  • 方法调用
  • 元素访问器
  • 其他表达式

表达式是运算符和操作数的字符串

1.1 字符字面量和字符串字面量

1.1.1 字符字面量

字符字面量有两个单引号内的字符组成,字符字面量的类型是 char,字符字面量可以是下面任意一种:

  • 单个字符
  • 一个简单转义序列
  • 一个十六进制转义序列
  • 一个Unicode转义序列

1.1.2 常规字符串字面量

常规字符串字面量有双引号内的**字符系列**组成,类型是 string

1.1.3 逐字字符串字面量

逐字字符串字面量有双引号内的**字符系列**组成,且以一个 @ 为前缀,在此的字符串无需转义,除了双引号,相邻的双引号组,被解释成单个双引号字符。eg:

string vst2 = @"it started, ""Four score and seven..."""
//打印出来是:it started, "Four score and seven..."

2 运算符

2.1 浅比较

对于大多数引用类型来说,比较它们的相等性,将只 比较它们的引用

2.2 深比较

string 类型是引用类型,但是它比较方式不同,比较字符串的相等性,将比较它的长度和内容(区分大小写),这称为深比较

与C和C++不同,在C#中数字不具有布尔意义

2.3 递增运算符和递减运算符

  • 前置递增 ++var:变量的值加1并保存,返回变量新值
  • 后置递增 var++:变量的值加1并保存,返回变量旧值

2.4 用户定义的类型转换

转换分为 自定义转换 和 预定义的转换

这允许把用户定义类型的对象转换成某个其他类型
C#提供隐式转换和显式转换

  • 隐式转换:如有转换必要,编译器会自动执行转换
  • 显式转换:只能使用显式转换运算符时才执行转换

2.4.1 隐式转换

语法要点:

  • publicstatic 修饰符是必须的
  • 命名 implicit operator 方法
  • 紧接目标类型
  • 最后紧接括号括起的源数据

eg:

class LimtiedInt
{
	const int MaxValue = 100;
	const int MinValue = 0;
	public static implicit operator int(LimtiedInt li)
	{
		return li.TheValue;
	}
	public static implicit operator LimitedInt(int x)
	{
		LimitedInt li =new LimitedInt();
		li.TheValue = x;
		return li;
	}
	private int _theValue = 0;
	public int TheValue
	{
		get { return _theValue;}
		set
		{
			if (value < MinValue)
				_theValue = 0;
			else
				_theValue = value>MaxValue ? MaxValue : value;
		}
	}
}
class Program
{
	static void Main()
	{
		LimitedInt li = 500;
		int value = li;
		Console.WriteLine("li:{0},value:{1}", li.TheValue, value);
	}
}

以上代码输出:

li: 100,value: 100

2.4.2 显式转换

显式转换语法要点(仅第二点与隐式转换不同):

  • publicstatic 修饰符是必须的
  • 命名 explicit operator 方法
  • 紧接目标类型
  • 最后紧接括号括起的源数据

必须显式地运用 强制类型转换运算符在一对圆括号内部,包含转换成的类型名称):

LimitedInt li = (LimitedInt) 500;
int value = (int) li;

2.4.3 运算符重载

不是所有的运算符都可以被重载只有下面的可以:

  • 一元运算符:+-!~++--truefalse
  • 二元运算符:+-/%*&|^<<>>==!=<>>=<=

3 语句

语句是描述某个类型或让程序执行某个动作的源代码指令。
空语句 仅有一个分号组成

3.1 do 循环

语法:

do
	Statement
whild( TestExpr); // 分号必须

3.2 switch 语句

语法:

switch(TestExpr)
{
	case ConstExpr1:
		StatementList
		break;
	case ConstExprN:
		StatementList
		break;
	default:
		StatementList
		break;
}

分支末尾必须为 break 语句或其它4种跳转语句,另四种是:

  • return
  • continue
  • goto
  • throw

3.3 using 语句

再进行一些诸如文件操作、数据库连接操作、网络资源操作等行为后,都需要显式地关闭这些行为,尽可能快地释放它们。
using 语句简化该过程并确保这些资源被适当地处置。资源 是指一个实现 System.IDisposable 接口的类或结构,使用资源的阶段:

  • 分配资源
  • 使用资源
  • 处置资源
using (ResourceType Identifier = Expression) Statement

// 圆括号内代码 分配资源
// statement 是 使用资源
// using 隐式处置资源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值