ASP.NET中的參數與特殊類型的執行個體詳解

來源:互聯網
上載者:User
這篇文章主要介紹了ASP.NET中的參數與特殊類型和特性,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

一、選擇性參數和具名引數

1、選擇性參數

文法:

[修飾符] 傳回型別 方法名(必選參數1...必選參數n,選擇性參數1...選擇性參數n)

eg:


static void BookList(string category,int pageIndex = 1)        {          //操作        }        //調用        static void Main(string[] args)        {          BookList("C#"); //使用全部預設參數          BookList("C#",2) //不使用預設參數        }

2、具名引數

文法:

方法名(參數1名:參數1值...參數n名:參數n值)

eg:


static void BookList(string category,int pageIndex = 1)        {          //操作        }        //調用        static void Main(string[] args)        {          BookList(category:"C#"); //使用全部預設參數          BookList(category:"C#",pageIndex:2) //不使用預設參數        }

二、.NET的特殊類型

1、隱式類型

隱式類型主要有以下幾種應用場合:聲明局部類型變數、for初始化語句、foreach初始化語句、using語句

eg:


  var list = new Student(); //Student為自訂類型

  注:使用var,必須在聲明變數的同時進行賦值

2、匿名型別(可以通過new運算子和對初始值來建立匿名型別)

new{屬性1名:屬性1值,...屬性n名:屬性n值}

eg:


   var stu = new {Name="張三",Age=18,Gender="男"};

註:匿名型別中的屬性的賦值是一次性的,即匿名對的屬性是唯讀

3、dynamic類型(定義動態類型)


 //建立1個動態類型對象       dynamic person1 = new Student{Name="Bing",Age=20};      person1.Introduce();

在編譯時間不會報錯,在運行時會報錯,因為沒有Introduce方法

4、dynamic與var關鍵字有什麼區別?

var只能用於局部變數,不能用於欄位和參數;聲明的同時必須初始化;變數的類型在編譯時間就確定了

dynmic用於類型的欄位、方法參數、方法傳回值,可用於泛型型別參數等;可以賦值或被賦值任何類型

不需要強制類型轉換

5、可空類型

1.文法:

System.Nullable<類型> 變數名

類型?變數名

eg:


 System.Nullable<int> num = null;             System.Nullable<DateTime> birthday = null;            //或             int? num = null;            DateTime? birthday = null;

註:當把一個可空類型賦值給一個非空類型時,將引發編譯錯誤


   eg:int? num = null; int num2 = num;

2.可以使用可空類型的屬性,解決不能把一個可空類型賦值給一個非空類型

(1) HasValue:屬於bool類型,當變數包含非空值時,它被設定為true

(2) Value:如果HasValue為true 則說明Value包含有意義的值,否則將引發InvalidOperaionException


   int? num1 = 5        int num2 = num1??0;

三、特性

1.C#的特性主要有以下特點

為目標元素(可以是程式集、類、屬性、方法)加入附加資訊,類似於注釋

特性本質上也是一個雷,直接或間接的繼承自Acttribute類

特性命名都以Attribute結尾,但是在使用它時可以省略,.NET會自動找到對應得屬性類別

2.文法

[特性名] 或[特性名(參數值...)]

eg:


[Obsolete]  //這個方法可用使用 但是編譯時間會警告        [Obsolete("不要使用舊的方法,使用新的方法",false)]  //這個方法可用使用 但是編譯時間會警告        [Obsolete("不要使用舊的方法,使用新的方法",true)]   //這個方法不可以使用,編譯時間會報錯        static void Old(){          Console.WriteLine("這是舊方法!");        }        static void New(){          Console.WriteLine("這是新方法!");        }        public static void Main(){          Old();        }

3.自訂特性(繼承Attribute)

eg:


[AttributeUsage(AttributeUsages.Class|AttributeUsages.Method,AllowMultiple=true)]      [AttributeUsage(AttributeUsages.Class)]  //只能在類中進行使用      [AttributeUsage(AttributeUsages.Method)]  //只能在方法中進行使用      [AttributeUsage(AllowMultiple=true)]    //可以在同一個類上進行多次使用            class DescriptionAttribute:Attribute{        public string name{get;set;}        public DescriptionAttribute(){}        public DescriptionAttribute(string name){          this.name = name        }      }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.