一、可选参数和命名参数
        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. js 日期格式 转换 yyyy-MM-dd

    之前js获取到数据库的Date,总是显示成: 后来知道是js 的Date 格式不能直接转换常用的yyyy-MM-dd 的格式 Date.prototype.yyyymmdd = function () ...

  2. Linux软件包管理之RPM命令

    目录 1.Linux软件包分类 一.源码包 二.二进制包 2.rpm 包命名规则 3.rpm包安装 4.rpm包升级 5.rpm包卸载 6.查询rpm包是否安装 7.查询软件包的详细信息 8.查询软件 ...

  3. 【InfluxDB】InfluxDB学习实践笔记

    InfluxDB是用Go编写的一个开源分布式时序.事件和指标数据库,无需外部依赖.它与Elasticsearch.Graphite等类似.比较适用于与事件紧密相关的数据,例如实时日志数据.实时监控数据 ...

  4. ASP.NET-FineUI开发实践-18

    Grid编辑下垃级联 看了看专业版的例子,分为以下几步,都是前端的 1.编辑父下拉框后,重置子下拉框 2.编辑子下垃框前,通过父下垃框数据得到下垃项,然后绑定数据 所以这里要截取Grid的两个事件,编 ...

  5. SpringBoot快速引入第三方jar包

    工作中,我们常会用到第三方jar包,而这些jar包往往在maven仓库是搜不到的,下面推荐一种简单.快速的引入第三方依赖的方法: 比如第三方jar包在lib文件夹下,对pom.xml的配置如下: &l ...

  6. Redis 缓存应用实战

    为了提高系统吞吐量,我们经常在业务架构中引入缓存层. 缓存通常使用 Redis / Memcached 等高性能内存缓存来实现, 本文以 Redis 为例讨论缓存应用中面临的一些问题. 缓存更新一致性 ...

  7. MySQL Router实现MySQL的读写分离

    1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...

  8. 基于mvc三层架构和ajax技术实现最简单的文件上传

    前台页面提交文件 <!DOCTYPE html> <html><head> <meta name="viewport" content=& ...

  9. MySQL添加列、删除列,创建主键等常用操作总结

    一. 列常用操作 ① 添加新的一列test_column,并将其作为主键,FIRST将其放在表中第一行,auto_increement是自动增长 alter table test_table add  ...

  10. 模拟获取post数据的方式

    使用下面两种方法可以获取post数据 .通过$HTTP_RAW_POST_DATA获取 $post=$GLOBALS['HTTP_RAW_POST_DATA']; 但需要修改相应的php.ini指令 ...