说到中国的歌坛,不能光说张学友这种大咖吧,我看那些怪咖更给力,比如我们的龚琳娜童鞋,一首神曲《忐忑》唱的那叫不可收拾,而且听到的改编版本更多,每一次都是心怀忐忑,就像C#里的那些关键字 说到这些关键字,我不得不说它们高端大气上档次,它们只会偶尔出现,所以你也可以说它们低调奢华有内涵,但绝对是程序猿之必备神器,无论是面试,还是开发、、、 那就认识认识吧,可是又太多,所以也只能是想到哪里是哪里,我们这就让思绪自由飞翔一会吧! 1、@ 这个东东看似和邮件有关啊,但是在C#的世界里,可跟邮件没有一毛钱关系,它是string的女朋友(当然了string有N多女友),二者结合就可以发挥作用了。你可以给它起个名字,叫做“逐字字符串”,或者别的什么东东都行,这都不重要,关键你要会泡它~ 在处理字符串时,那些个字符串转义字符我们可伤不起,一个个的记又记不住,用了还要查,麻烦的不行,那@就是为解决这个而诞生的,直接让字符串原样输出有木有?什么sql字符串了,还有路径啥了的,统统搞定 string sql = @"select * from student where id = '001'"; //实际sql输出select * from student where id = '001' string path = @"C:\MDocu\student.xml"; //实际path输出C:\MDocu\student.xml,注意这里可不是\\哦 如果字符串里边包含双引号时,要稍微处理一下,那就是在双引号的外边再加双引号即可 string s = @"He said,""yes"""; //s输出He said,"yes" 2、is 目的就一个,检查变量是不是给定的类型,是就返回true,不是就false了,比较简单,一笔带过了 int i = 5; bool check = i is int;//check = true 3、as 用于在兼容的引用类型之间执行转换。例如 string s = someObject as string; if (s != null) { // someObject is a string. } as运算符类似于强制转换操作;但是,如果转换不可行,as会返回null而不是引发异常。更严格地说,这种形式的表达式 等效于 expression is type ? (type)expression : (type) null as 运算符只执行引用转换和装箱转换。as运算符无法执行其他转换,如用户定义的转换,这类转换应使用cast表达式来执行。 4、sizeof 用于获取非托管类型的大小(以字节为单位) int intSize = sizeof(int);//intSize = 4 5、typeof 返回Type对象,该对象保存类型信息 Type myType = typeof(int); console.writeline("Type:{}",myType); //输出Type:System.Int32 6、checked 检测操作的溢出情况 short a =20000,b=20000; short myShort = checked((short)(a+b)); //error 7、unchecked 忽略溢出关键字,接受结果而不管溢出情况,默认是不检查溢出的 short a =20000,b=20000; short myShort = checked((short)(a+b)); //忽略error 8、Guid 全局唯一标示符,是一个128位的字符串,在任何要以唯一方式来表示某个事物时就可以用该屌丝。 uniquecode = Guid.NewGuid (); console.WriteLine("myCode:{}",uniquecode.ToString()); //输出:myCode:cabfe0ba-fa72-4c5c-969f-e76821949ff1 9、? 可空类型 public class student { private string name; private int? age=null; public string Name { get { return name; } set { name = value; } } public int? Age { get { return age; } set { age = value; } } } student s = new student(); s.Age = null;//是允许的 10、?? null接合操作符,也可以说是 DateTime? createDate = null; DateTime? defaultDate= null; DateTime secondDate = DateTime.Now; createDate = createDate ??defaultDate??secondDate; // 如果createDate 为空,则对defaultDate求值,如果defaultDate不为空,则将defaultDate赋值给createDate 。否则继续计算secondDate,是不是null都赋值给createDate ,因为是最后一个表达式 11、:: 这个东东比较少见,你可以叫它双冒号运算符,这个在给命名空间起别名的时候能用到 在此示例中,命名空间 System 用于包括类 TestClass,因此必须使用 global::System.Console 来引用 System.Console 类,该类被 System 命名空间隐藏。 而且,别名 colAlias 用于引用命名空间 System.Collections;因此,将使用此别名而不是命名空间来创建 System.Collections.Hashtable 的实例。 using colAlias = System.Collections; namespace System { class TestClass { static void Main() { // Searching the alias: colAlias::Hashtable test = new colAlias::Hashtable(); // Add items to the table. test.Add("A", "1"); test.Add("B", "2"); test.Add("C", "3"); foreach (string name in test.Keys) { // Searching the global namespace: global::System.Console.WriteLine(name + " " + test[name]); } } } } |