C# 中的语法糖

1.   using 代替了 try…catch…finally                                             

因为事先是学 Java
的,在连年数据库或然拓展文件读写操作时很自然的就使用了
try…catch…finally…,在 C#
中那样写也一定能够只是还有一种更优雅的写法(笔者见到旁人那样说),这正是行使
using 关键字。

在动用种种流只怕连接时【文件读写流,数据库连接等等】,在采用实现后,要求关闭流和连接,(那里不商量数据库连接要求偿还到池塘)

事先的代码是那样的:

public void Test1()
        {
            SqlConnection conn = null;
            SqlDataReader reader = null;
            try
            {
                string strConn = ConfigurationManager.ConnectionStrings["strConn"].ToString();
                conn = new SqlConnection(strConn);
                conn.Open();
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "XXXXXXXXX";
                reader = cmd.ExecuteReader();
                //一些操作
            }
            catch (Exception e)
            {
                Console.WriteLine("出错啦!!");
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                    conn.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
            }
        }

 

动用了 using 关键字之后是那般的:

public void Test2()
        {
            string strConn = ConfigurationManager.ConnectionStrings["strConn"].ToString();
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "XXXXXXXXXX";
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        //一些操作
                    }
                }
            }
        }

至于 using
关键字,有要求弄清楚“托管能源”和“非托管能源”,唯有非托管能源才须求采取using 关键字。

有关非托管财富和托管能源得以看那篇博客【      】

二.   动态指标,字段的简短                                                        

还记得在 Java 中写字段的读写方法时,快捷键用的一对一的 陆 ,那么 C#
中向来不与其类似的对象呢,急忙键当然有,但是还有更猛的,就是不要写字段了,只管写读写属性就好,编写翻译器会自动依照读写属性去生成字段。

public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Sex { get; set; }
    }

编写翻译器在编写翻译时就会自动生成字段,上面是编写翻译过后的
IL代码目录,能够见见最下面生成了多个字段。

图片 1

三.  五个问号“??”的效劳                                                                

2个问号见过,在3目元算符里面纵使。多少个问号呢?

事先看到如此的写法也是相比较奇葩的。看代码吧:

public class Program
    {
        public static void Main(string[] args)
        {
            string a = null;
            var b = a ?? "woaini";
            Console.WriteLine("b : " + b);
            Console.WriteLine("=============");
            a = "msym";
            var c = a ?? "woaini";
            Console.WriteLine("c: " + c);

}
}

运营看结果:

图片 2

敲定便是:问号左侧的是 null
得话,那么获得正是问号左侧的值,反之正是问号左侧的值。

肆.   扩充方法                                                                                 

以此可以看这些博客【C#
中的扩充方法

还有这一个博客,扩大方法的选择【扩张方法的施用

事实上自个儿对增加方法的接头,便是3个卓殊的工具类,只不过和系列绑定在同步了。那只是自身一时的理解,因为还没提到到底层。

 

5.  对象初叶化器和匿名对象                                                      

这一点和 JavaScript 的对象直接量就很像了。

          //对象初始化器
            Person p = new Person {
                Name = "andy",
                Age = 24
            };
            //匿名对象
            var p2 = new { Name = "dimo", Age = 24 };
            Console.WriteLine(p.Name);
            Console.WriteLine(p2.Name);

【未完待续】

 

回到主页

相关文章