c#中的各种符号解释【不断更新中】

单个符号

由于在C#中这些符号不仅单用,还有各种组合使用情况,因此这里首先介绍它们单用的情况。

1. ~

逐位求反,例如: ~1=0,~0=1,~00010=11101;

另一种解释:按位求补符。这个符号可能比较少见,不过它确实很有用。1的32位表示为0000 0000 0000 0000 0000 0000 0000 0001,那么int a=~1实际为-2,即1111 1111 1111 1111 1111 1111 1111 1110。另外,~在List的BinarySearch中将会使你的操作方便很多。在这个二分查找的实现中,如果查找的元素不在集合中,它会返回一个负 值,技巧就在这里,这个数的求补结果是下一个比查找元素大的元素的位置,如果没有更大的元素,那么它表示元素总数。这个技巧使得我们在插入新的元素的时候 方便很多。

 

 

以下为引用的内容:

static void main()
{
List
< string > list = new List < string >
();
   
int
search;

    list.Add(
" public "
);
    list.Add(
" protected "
);
    list.Add(
" private "
);
    list.Sort();
    search
= list.BinarySearch( " protected internal "
);
   
if (search < 0
)
    {
list.Insert(
~ search, " protected internal "
);
    }
   
foreach ( string accessModifier in
list)
    {
        Console.WriteLine(accessModifier);
    }
}

输出结果为:

private protected protected internal public

2. !,@,#和$

!非逻辑运算符,这里不多讲。@常用在字符串开头,它可以告诉编译器忽略转义符,从而可以很方便的将一些特殊字符按用户表达意愿输出,另外在 Aspx.Net中这个字符常和其他字符混合使用。#和$微软暂时没盯上(当然如果你觉得C#用到了#的话也行)。不过$符号相信很多人都熟悉,大名鼎鼎 的JQuery使得这个符号处处可见,不过不保证以后微软也插上一脚。一下是$符号在js中的意思:

1、首先可以用来表示变量,
比如变量 var s='asdsd'或var $s='asdasd';
2、在正则表达式中,它可以匹配结尾
/sa$/.test(string)
匹配string字符串中的sa,比如string='125sa'则匹配,string='125sa21'则不匹配
正则表达式很复杂,这里只是简单的说说。
3、由于受prototype.js(老外写的框架,用于将一些常用的函数封装,方便操作)的影响,
现在很多人都用 $来表示一个查找对象的函数,
$=function (id) { return (typeof (id)=='object')?id:document.getElementById(id); };
其实就是一个自定义函数,用$只是简单,其实用其它字符也是一样的,
f=function (id) { return (typeof (id)=='object')?id:document.getElementById(id); };也可以
其中参数id是html文档中的id,
比如<div id='ss'></div>
则obj=$('ss')就是引用的这个id='ss'的对象

 

4.%,^,&,*,(),-,+,=,{},|和/

这些符号基本都是常见符号符号,因此这里也只做简单解释。%是求余运算符,^是异或位运算符,&则是按位与运算符,另外|是按位或运算 符。*既可以用作乘法符号,还可以表示为指针。()和{}用于对象中,前者一方面表示函数参数区域,另一方面在强制类型转换时表示把一种类型强制转换为括 号中的类型,除此,它还用来包裹运算部分从而制定运算优先级,后者则长表示代码片段作用域,它既可以用于指代命名空间中的有哪些类或类中包括哪些属性方法 等,还可以用于在协助C#中某些特殊操作时指定其作用块,如fixed,using等等,另外在字符串格式化中,{}和数字组合表示目标字符串中待替换子 串位置, e.g. String.Format(“{0} + {1}={3}”, 1,2,3)。+通常表示相加数学运算符,=则长用来表示赋值操作。另外,这些操作符可以组合来表示不同含义,后面将会详细说明这一部分。/用于转义符的 开始,如/n表示换行。

5.[]

这个符号同样常见,它通常有三种使用方式,一个是用于数组中表示索引位置,一种为添加类型的特性时使用,另外它也常常和this关键字在类中配合使用来形成类索引。

 

以下为引用的内容:

class Some

{

int this [ string
item]

{

get


{

if (item == ”a”) return 1 ;

return 0
;

}

}

}

6. :,;',”,’,<,,,>,.,/,?

:目前没有单独使用情况,后面会讲到它的组合使用,;处处可见,C#不像VB,它用;表示语句的结束。”包裹字符串,’则包裹单个字符。< 和>分别为大和小的逻辑运算符,,用于分隔参数,.用于表示对象成员选择器或小数点。/则表示除以的数学运算符。?单个常用于表示可空的值类 型,int? a=null,它也可以与很多字符组合使用来表示不同意义。

符号组合

好了,键盘上的符号键基本介绍完毕,在C#中,符号更为强大的一面是它们之间不同组合产生不同的意义,这里将会对此作出一些简单介绍。

1. 单个字符重复组合

这里有?和+,-,&,|,<,>以及=。??同样用于泛型中,它在值类型数据操作时非常有用,它可以在值类型为空时指定默认 值,e.g. int a=someNullable??100;它表示如果someNullable不为空时则将其值赋给a,否则将100赋值给a,另外你也可以参考这篇文章 。++和--表示自加或减1。&&,||和==则表示逻辑关系的且,或和相等。<<和>>则分别表示左右移位操作。最后//表示单行注释。

1. 数学运算符,位运算符,逻辑运算符和=的组合使用。

和C/C++中类似,C#通过这两种符号的组合简化了程序员在常见数学运算时的输入。如+=,-=,*=,/=,%=,还有& amp;=,~=,|=等,它是一个数自身与某个数做相应数学操作的结果。如a+=10完整形式为:a=a+10。逻辑运算符和=则表示或的关系,如& gt;=表示大于或等于。

2. ?和:组合

这个组合的符号不是紧挨着的,不过他们必须组合使用。这里?和:组成条件表达式,int c= a==b?a:b; 它的存在同样简化程序员代码。

3. =>组合以及<>配对

=>组合是3.0以后加入的,它也是构成Lamda表达使得部分,它使得匿名函数的书写更加简洁。通常它前面会包含有表达式参数部分,后面则是表达式的主体部分。<>则在泛型中大量使用,它用来包裹类型参数。

4. ASPX页面中的符号组合

在ASPX中组合符号很多,一般基本都是左右尖括号和其他符号组合来表示服务器端脚本代码,从而达到插入服务器代码的目的。这里仅列出一些常见符号组合。

首先<%@ 和%>用来表示ASPX 2.0的Page指令,它一般出现在页面顶部。在ASPX.NET页面或用户控件中有11个指令(注1),指令格式为:<%@ [Directive] [Attribute=Value] %>。

<%=%>用于在HTML代码中插入.NET代码片段。在Aspx.Net MVC中这个字符组合非常常见,这点类似以前的ASP,这也是有些程序员认为MVC退回到ASP时代的一个原因。

总结

符号在很多时候不仅比字符更加简洁的表达意思,而且它还更形象和直观,这也是符号在.net中出现的一个原因。不过符号并不是越多越好,所谓过犹不 及,太多太复杂的符号有时候反而会让程序员产生混淆和误解。所以目前.NET中出现的符号数量并不是太多,并且未来.NET中符号应该是基本固定的。不过 这并不妨碍微软在适当的时候添加一些新的,有用的符号。比如有人在展望.NET 5.0的时候曾提到目前微软推出的Vedea语言的一个很不错的特性:绑定,它的符号为:textbox.Text := slider.Value; 这意味着当Value改变的时候,Text也会相应改变。而双向绑定的语法则有所不同:textbox.Text :=: slider.Value; 相信这个新的符号如果加入到.NET中来一定会让我们的代码比以前更加方便的!同时也期待类似的能简化我们程序员并且形象,直观的新特性符号能在未来出 现。


补充:

“@”

  @符号是特殊而又实用的C#符号.

比如它在string中的应用.

1、字符@表示,其后的字符串是个“逐字字符串”(verbatim string). // 这个说法来自C# Primer 中文版(Stanley B. Lippman, 侯捷/陈硕合译)

2、对于逐字字符串字面变量(verbatim string literal),我们不再需要使用“转义序列”就可以指定反斜线之类的特殊字符.@的这个特点使得在表示文件路径时很方便.如:string str = @"C:Test.txt";

3、另外一点,用@表示的字符串能够跨越数行.这数行之内的空白字符(White Space)都会保留在字符串里.这样便能允许存储和生成带有格式的文本块.本文发表于www.bianceng.cn如:string strText = @"Line1Line2Line3";有意思的是如果在VS.NET2003中当你输入完第一行(string strText = @"Line1)换行后,光标会自动到第二行最开头 ^_^.很智能化、人性化的判断.

4、不知道大家在最初看到@的功能时有没有想,如果“转义序列”()在字符串中“失效”,那么想包含一个双引号("),怎么办?我找到了答案.方法 很简单.在双引号之前再加一个双引号即可.如:string str = @"""Great!""Said Allen Lee";

5、这仅仅是@在字符串中的用法,有机会再去看看@的其他东东.

 

From: http://lj.soft.blog.163.com/blog/static/79402481201031711626110/

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值