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

   

  static void BookList(string category,int pageIndex = )
{
//操作
} //调用
static void Main(string[] args)
{
BookList("C#"); //使用全部默认参数
BookList("C#",) //不使用默认参数
}

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

    

 static void BookList(string category,int pageIndex = )
{
//操作
} //调用
static void Main(string[] args)
{
BookList(category:"C#"); //使用全部默认参数
BookList(category:"C#",pageIndex:) //不使用默认参数
}

二、.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=,Gender="男"}; 
            
            注:匿名类型中的属性的赋值是一次性的,即匿名对的属性是只读的
            
        3、dynamic类型(定义动态类型)

  //创建1个动态类型对象
dynamic person1 = new Student{Name="Bing",Age=};
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
}
}

ASP.NET中的参数与特殊类型和特性的更多相关文章

  1. ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别

    ASP.NET的控件包括WEB服务器控件.WEB用户控件.WEB自定义控件.HTML服务器控件和HTML控件.HTML控件.HTML服务器控件和WEB服务器控件之间的区别如下所示.q      HTM ...

  2. asp.net中URL参数传值中文乱码的三种解决办法

    在做Asp.Net开发的时候,参数传递中文时,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考: 解决的方法一般有3种: 1.设置web.config文件 <system.web ...

  3. Java学习——方法中传递参数分简单类型与复杂类型(引用类型)编程计算100+98+96+。。。+4+2+1的值,用递归方法实现

    package hello; public class digui { public static void main(String[] args) { // TODO Auto-generated ...

  4. SpringMVC参数绑定(从请求中接受参数)

    参数绑定(从请求中接收参数) 1)默认类型: 在controller方法中可以有也可以没有,看自己需求随意添加. httpservletRqeust,httpServletResponse,httpS ...

  5. ASP.NET Web API中的参数绑定总结

    ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...

  6. ASP.NET中定制自己的委托和事件参数类

    本文笔记选自<庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术>一书 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件的事件,在引发事件时传递的 ...

  7. asp.net中Request请求参数的自动封装

    这两天在测一个小Demo的时候发现一个很蛋疼的问题----请求参数的获取和封装,例: 方便测试用所以这里是一个很简单的表单. <!DOCTYPE html> <html xmlns= ...

  8. 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置

    我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...

  9. 在 ASP.NET MVC 应用中使用 NInject 注入 ASMX 类型的 Web Service

    这几天,有同学问到为什么在 ASP.NET MVC 应用中,无法在 .ASMX 中使用 NInject 进行注入. 现象 比如,我们定义了一个接口,然后定义了一个实现. public interfac ...

随机推荐

  1. leetcode — search-insert-position

    /** * Source : https://oj.leetcode.com/problems/search-insert-position/ * * Created by lverpeng on 2 ...

  2. Win32线程安全问题.同步函数

    线程安全问题.同步函数 一丶简介什么是线程安全 通过上面几讲.我们知道了线程怎么创建.线程切换的原理(CONTEXT结构) 每个线程在切换的时候都有自己的堆栈. 但是这样会有安全问题. 为什么?  我 ...

  3. 开发-封闭原则(OCP)

    1.什么是“开放-封闭” 随着软件系统规模的不断增大,软件系统的维护和修改的复杂性不断提高,这种困境促使法国工程院士Bertrand Meyer在1998年提出了“开放-封闭”(Open-Close ...

  4. sed修炼系列(二):sed武功心法(info sed翻译+注解)

    sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中 ...

  5. OJ:访问 const 成员函数问题

    Description 补足程序使得其输出结果是: 40 #include <iostream> #include <string> using namespace std; ...

  6. 关于 Uboot 中有趣的 0xdeadbeef 填充

    在 Uboot 的 Start.S 中存在以下源码: .globl _start _start: b start_code ldr pc, _undefined_instruction ldr pc, ...

  7. 伪指令 ADR 与 LDR 的区别

    指令简介: adr r0, _start 得到的是 _start 的当前执行位置,由 pc+offset 决定 ldr r0, =_start 得到的是绝对的地址,链接时决定 程序示例: ldr r0 ...

  8. __EF批量删除

    控制器: [HttpPost] public int Delete_All(string Id) { List<int> IDS = new List<int>();//创建l ...

  9. C#爬虫----Fiddler 插件开发 自动生成代码

    哈喽^_^ 一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成封包代码就尤为重要了( ...

  10. intellij error updating changes svn解决办法

    乌龟检出的svn版本为1.8,而1.8在IntelliJ 上跑起来貌似有问题, 经过多次尝试,当Format改为1.7后,问题被解决.