study Mvc step by step (二) 关于MVC的一些C#特有语法

   在我们即将进入ASP.NET开发大门的时候。我们需要先学习一些C#的特有语法。而且对于传统的webform的开发,我们介绍的这些C#特有语法并不是每个人都熟悉的.本节将介绍一个MVC优良程序员所需要的C#语言特性。

一:c#的基本特性

1.1使用自动实现的属性

c#属性特性让你暴露一个类的数据片段,这些数据以及如何设置和接收数据采取了一种松耦合的方式。就是说并不是直接和我们类中的字段相关联,而是通过一个对外的接口。我们首先看一下下面的这个叫做   "product"  类  类里面我们只有一个字段

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 河南云和数据
{
   public  class Product
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }


    }
}

名称为"Name"的属性。get代码块(成为getter)中的语句在读取该属性值时执行,而set代码块(成为 setter)中的语句则对这个属性赋值时执行(特殊变量value表示要赋予的值)。属性是由其他类来使用的,就好像它是一个字段一样,总而言之。在上述类中,name是字段。而Name是属性。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 河南云和数据;
namespace CW
{
    class Program
    {
        static void Main(string[] args)
        {

            Product MyProduct = new Product();
            MyProduct.Name = "河南云和数据Rocky Ren";

            string procductname = MyProduct.Name;
            Console.WriteLine("Product name is {0}",procductname);
            Console.ReadKey();

        }
    }
}
通过属性赋值取值

你可以看出,属性值的读取和设置,就像对一个规则的字段进行读取操作一样,使用属性就要比使用字段好很多,因为你可以修改get和set块中的语句,而不需要修改依赖于这个属性的整个类。但是,当一个类中有很多属性时,事情就变得枯燥了,所有的getter和setter都要做同样的事情--填充字段。于是我们又要做一些冗长的事情。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 河南云和数据
{
   public  class Product
    {
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private string deacription;

        public string Deacription
        {
            get { return deacription; }
            set { deacription = value; }
        }

        private decimal price;

        public decimal Price
        {
            get { return price; }
            set { price = value; }
        }

      
    }
}

这里需要说明一点的是我们可以在字段中(ctrl+r+e)快速封装这些字段。

我们希望属性具有灵活性,但此刻又不需要自定义的getter和setter,解决方案是一种自动实现的属性,也成为”自动属性“他不需要getter和setter

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 河南云和数据
{
   public  class Product
    {
       public int Id { set; get; }
       public string Name { set; get; }
       public string Description { set; get; }
       public decimal Price { set; get; }
       public string Category { set; get; }

      
    }
}

在使用自动属性的时候,有两个关键点要注意。第一是不定义getter和setter的体,第二是不定义由该属性返回的字体。这两者都由C#编译器在这个类被建立时自动完成.使用自动属性与使用规则没什么不同,形成便于代码阅读的代码,并且仍然保持了属性的灵活性,如果需要改变一个属性实现的方式,还可以返回规则属性的格式。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 河南云和数据
{
   public  class Product
    {
       private int id;
       public int Id { set; get; }
       private string name;
       public string Name { set; get; }
       private string description;
       public string Description { set; get; }
       private string price;
       public decimal Price { set; get; }
       public string Category { set; get; }

      
    }
}

 使用对象和集合初始化器  

 

study Mvc step by step (二) 关于MVC的一些C#特有语法,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。