前言
年关将至因此到处都出现了各种各样的总结和归类文章因此这里我也带各位读者对NET中出现的符号总结一下温故知新希望能将你可能对有些符号的模糊的记忆重新理清对你有所启示
程序员们花秒钟将你的眼神从屏幕上挪开看下你的键盘(eg图)找找键盘上那些熟悉的符号作为一个C#开发人员你有没有突然发现它们大部分都是那么的亲切呢?是的看看键盘上的这些符号大部分都已经被微软用掉了剩下的几个虽然目前没被用上但我相信微软内部应该也有人盯着他们指不定哪天你就会发现一个新的符号用法会加入到C#中来因为符号在一门语言中往往比字母更能形象的传文达意同时给开发人员留下深刻的印象最常见的例子就是+//*//这些数学操作符了而且相对java来讲还支持用户重载常用操作符言归正传下面我将按键盘布局从左往右一一讲解这些符号顺便也带大家复习下这些符号
图键盘符号图
单个符号
由于在C#中这些符号不仅单用还有各种组合使用情况因此这里首先介绍它们但用的情况
~
按位求补符这个符号可能有些同学见得比较少不过它确实很有用eg 的位表示为 那么int a=~实际为即 另外~在List的BinarySearch中将会使你的操作方便很多在这个二分查找的实现中如果查找的元素不在集合中它会返回一个负值技巧就在这里这个数的求补结果是下一个比查找元素大的元素的位置如果没有更大的元素那么它表示元素总数这个技巧使得我们在插入新的元素的时候方便很多eg
代码
static void main()
{
List<string> list = new List<string>();
int search;
listAdd(public);
listAdd(protected);
listAdd(private);
listSort();
search = listBinarySearch(protected internal);
if (search < )
{
listInsert(~search protected internal);
}
foreach (string accessModifier in list)
{
ConsoleWriteLine(accessModifier);
}
}
输出结果为
private protected protected internal public
!@#和$
!相信地球人都知道非逻辑运算符这里不多讲@常用在字符串开头它可以告诉编译器忽略转义符从而可以很方便的将一些特殊字符按用户表达意愿输出另外在AspxNet中这个字符常和其他字符混合使用#和$微软暂时没盯上(当然如果你觉得C#用到了#的话也行)不过$符号相信很多人都熟悉大名鼎鼎的JQuery使得这个符号处处可见不过不保证以后微软也插上一脚
%^&*()+={}|和\
这些符号基本都是常见符号符号因此这里也只做简单解释%是求余运算符^是异或位运算符&则是且位运算符另外|是或位运算符*既可以用作乘法符号还可以表示为指针()和{}用于对象中前者一方面表示函数参数区域另一方面在强制类型转换时表示把一种类型强制转换为括号中的类型除此它还用来包裹运算部分从而制定运算优先级后者则长表示代码片段作用域它既可以用于指代命名空间中的有哪些类或类中包括哪些属性方法等还可以用于在协助C#中某些特殊操作时指定其作用块如fixedusing等等另外在字符串格式化中{}和数字组合表示目标字符串中待替换子串位置 eg StringFormat({} + {}={} )+通常表示相加数学运算符=则长用来表示赋值操作另外这些操作符可以组合来表示不同含义后面将会详细说明这一部分\用于转义符的开始如\n表示换行
[]
这个符号同样常见它通常有三种使用方式一个是用于数组中表示索引位置一种为添加类型的特性时使用另外它也常常和this关键字在类中配合使用来形成类索引eg
class Some
{
int this[string item]
{
get
{
if(item==a)return ;
return ;
}
}
}
:;<>/?
:目前没有单独使用情况后面会讲到它的组合使用;处处可见C#不像VB它用;表示语句的结束包裹字符串则包裹单个字符<和>分别为大和小的逻辑运算符用于分隔参数用于表示对象成员选择器或小数点/则表示除以的数学运算符?单个常用于表示可空的值类型eg int? a=null它也可以与很多字符组合使用来表示不同意义
符号组合
好了键盘上的符号键基本介绍完毕在C#中符号更为强大的一面是它们之间不同组合产生不同的意义这里将会对此作出一些简单介绍
单个字符重复组合
这里有?和+&|<>以及=??同样用于泛型中它在值类型数据操作时非常有用它可以在值类型为空时指定默认值eg int a=someNullable??;它表示如果someNullable不为空时则将其值赋给a否则将赋值给a另外你也可以参考这篇文章++和表示自加或减&&||和==则表示逻辑关系的且或和相等<<和>>则分别表示左右移位操作最后//表示单行注释O(∩_∩)O~
数学运算符位运算符逻辑运算符和=的组合使用
和C/C++中类似C#通过这两种符号的组合简化了程序员在常见数学运算时的输入如+==*=/=%=还有&=~=|=等它是一个数自身与某个数做相应数学操作的结果如a+=完整形式为:a=a+逻辑运算符和=则表示或的关系如>=表示大于或等于
?和:组合
这个组合的符号不是紧挨着的不过他们必须组合使用这里?和:组成条件表达式eg int c= a==b?a:b; 它的存在同样简化程序员代码
=>组合以及<>配对
=>组合是以后加入的它也是构成Lamda表达使得部分它使得匿名函数的书写更加简洁通常它前面会包含有表达式参数部分后面则是表达式的主体部分<>则在泛型中大量使用它用来包裹类型参数
ASPX页面中的符号组合
在ASPX中组合符号很多一般基本都是左右尖括号和其他符号组合来表示服务器端脚本代码从而达到插入服务器代码的目的这里仅列出一些常见符号组合
首先<%@ 和%>用来表示ASPX 的Page指令它一般出现在页面顶部在ASPXNET页面或用户控件中有个指令(注)指令格式为<%@ [Directive] [Attribute=Value] %>
<%=%>用于在HTML代码中插入NET代码片段在AspxNet MVC中这个字符组合非常常见这点类似以前的ASP这也是有些程序员认为MVC退回到ASP时代的一个原因
总结
符号在很多时候不仅比字符更加简洁的表达意思而且它还更形象和直观这也是符号中出现的一个原因不过符号并不是越多越好所谓过犹不及太多太复杂的符号有时候反而会让程序员产生混淆和误解所以目前NET中出现的符号数量并不是太多并且未来NET中符号应该是基本固定的不过这并不妨碍微软在适当的时候添加一些新的有用的符号比如有人在展望NET 的时候曾提到目前微软推出的Vedea语言的一个很不错的特性绑定它的符号为textboxText := sliderValue; 这意味着当Value改变的时候Text也会相应改变而双向绑定的语法则有所不同textboxText :=: sliderValue; 相信这个新的符号如果加入到NET中来一定会让我们的代码比以前更加方便的!同时也期待类似的能简化我们程序员并且形象直观的新特性符号能在未来出现对了你又期待有怎样的新符号加入呢?
注AspNet中的页面或用户控件指令为Assembly Control Implements Import Master MasterType OutputCache Page PreviousPageType Reference Register
作者Sean Zhu
出处