• ASP.NET中的参数与特殊类型和特性


    一、可选参数和命名参数
            1、可选参数
                语法:
                    [修饰符] 返回类型 方法名(必选参数1...必选参数n,可选参数1...可选参数n)
                    
                eg:

       

     1  static void BookList(string category,int pageIndex = 1)
     2                 {
     3                     //操作
     4                 }
     5                 
     6                 //调用
     7                 static void Main(string[] args)
     8                 {
     9                     BookList("C#");  //使用全部默认参数
    10                     BookList("C#"2) //不使用默认参数
    11                 }


            2、命名参数
                语法:
                    方法名(参数1名:参数1值...参数n名:参数n值)
                    
                eg:

        

     1 static void BookList(string category,int pageIndex = 1)
     2                 {
     3                     //操作
     4                 }
     5                 
     6                 //调用
     7                 static void Main(string[] args)
     8                 {
     9                     BookList(category:"C#");  //使用全部默认参数
    10                     BookList(category:"C#",pageIndex:2) //不使用默认参数
    11                 }

    二、.NET的特殊类型 

            1、隐式类型
                隐式类型主要有以下几种应用场合:声明局部类型变量、for初始化语句、foreach初始化语句、using语句
                
                eg:

        
                
       1 var list = new Student(); //Student为自定义类型            

      注:使用var,必须在声明变量的同时进行赋值
                
            2、匿名类型(可以通过new运算符和对初始值来创建匿名类型)
                new{属性1名:属性1值,...属性n名:属性n值}
                
                eg:
                    1 var stu = new {Name="张三",Age=18,Gender=""}; 
                
                注:匿名类型中的属性的赋值是一次性的,即匿名对的属性是只读的
                
            3、dynamic类型(定义动态类型)
              

    1  //创建1个动态类型对象
    2             dynamic person1 = new Student{Name="Bing",Age=20};
    3             person1.Introduce();


                
                在编译时不会报错,在运行时会报错,因为没有Introduce方法
                
            4、dynamic与var关键字有什么区别?
                var只能用于局部变量,不能用于字段和参数;声明的同时必须初始化;变量的类型在编译时就确定了
                dynmic用于类型的字段、方法参数、方法返回值,可用于泛型类型参数等;可以赋值或被赋值任何类型
                        不需要强制类型转换
            5、可空类型
                1.语法:    
                        System.Nullable<类型> 变量名
                        或
                        类型?变量名
                        
                        eg:
                         

    1                       System.Nullable<int> num = null;
    2                         System.Nullable<DateTime> birthday = null;
    3                         //或
    4                         int? num = null;
    5                         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:
                  

     1           [Obsolete]    //这个方法可用使用 但是编译时会警告
     2                 [Obsolete("不要使用旧的方法,使用新的方法",false)]    //这个方法可用使用 但是编译时会警告
     3                 [Obsolete("不要使用旧的方法,使用新的方法",true)]      //这个方法不可以使用,编译时会报错
     4                 static void Old(){
     5                     Console.WriteLine("这是旧方法!");
     6                 }
     7                 static void New(){
     8                     Console.WriteLine("这是新方法!");
     9                 }
    10 
    11                 public static void Main(){
    12                     Old();
    13                 }


            3.自定义特性(继承Attribute)
                eg:
              

     1        [AttributeUsage(AttributeUsages.Class|AttributeUsages.Method,AllowMultiple=true)]
     2             [AttributeUsage(AttributeUsages.Class)]   //只能在类中进行使用
     3             [AttributeUsage(AttributeUsages.Method)]    //只能在方法中进行使用
     4             [AttributeUsage(AllowMultiple=true)]        //可以在同一个类上进行多次使用
     5             
     6             class DescriptionAttribute:Attribute{
     7                 public string name{get;set;}
     8                 public DescriptionAttribute(){}
     9                 public DescriptionAttribute(string name){
    10                     this.name = name
    11                 }
    12             }



    作者:JamelAr
    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    7.1类模板
    异质链表
    8.1多态性
    8.2虚函数
    error: C2664: “zajiao::zajiao(const zajiao &)”: 无法将参数 1 从“const char [12]”转换为“char *”
    #include <QPushButton>
    6.3多重继承
    华为集群后killsql命令和查看mr占用的磁盘空间
    linux的逻辑运算符
    test命令
  • 原文地址:https://www.cnblogs.com/JamelAr/p/7081906.html
Copyright © 2020-2023  润新知