设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

那些年我们追过的C#奇葩关键字——忐忑

2013-9-12 15:14| 发布者: 红黑魂| 查看: 2421| 评论: 2|原作者: 书洞里的猫|来自: 博客园

摘要: 说到中国的歌坛,不能光说张学友这种大咖吧,我看那些怪咖更给力,比如我们的龚琳娜童鞋,一首神曲《忐忑》唱的那叫不可收拾,而且听到的改编版本更多,每一次都是心怀忐忑,就像C#里的那些关键字说到这些关键字,我 ...

说到中国的歌坛,不能光说张学友这种大咖吧,我看那些怪咖更给力,比如我们的龚琳娜童鞋,一首神曲《忐忑》唱的那叫不可收拾,而且听到的改编版本更多,每一次都是心怀忐忑,就像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 = sizeofint);//intSize = 4

5、typeof

返回Type对象,该对象保存类型信息

Type myType = typeofint);
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接合操作符,也可以说是双问号操作符,意思是取所赋值??左边的,如果左边为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]);
            }
        }
    }
}
复制代码



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部