ASP.NET中的参数与特殊类型和特性
一、可选参数和命名参数
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中的参数与特殊类型和特性的更多相关文章
- ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别
ASP.NET的控件包括WEB服务器控件.WEB用户控件.WEB自定义控件.HTML服务器控件和HTML控件.HTML控件.HTML服务器控件和WEB服务器控件之间的区别如下所示.q HTM ...
- asp.net中URL参数传值中文乱码的三种解决办法
在做Asp.Net开发的时候,参数传递中文时,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考: 解决的方法一般有3种: 1.设置web.config文件 <system.web ...
- Java学习——方法中传递参数分简单类型与复杂类型(引用类型)编程计算100+98+96+。。。+4+2+1的值,用递归方法实现
package hello; public class digui { public static void main(String[] args) { // TODO Auto-generated ...
- SpringMVC参数绑定(从请求中接受参数)
参数绑定(从请求中接收参数) 1)默认类型: 在controller方法中可以有也可以没有,看自己需求随意添加. httpservletRqeust,httpServletResponse,httpS ...
- ASP.NET Web API中的参数绑定总结
ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...
- ASP.NET中定制自己的委托和事件参数类
本文笔记选自<庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术>一书 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件的事件,在引发事件时传递的 ...
- asp.net中Request请求参数的自动封装
这两天在测一个小Demo的时候发现一个很蛋疼的问题----请求参数的获取和封装,例: 方便测试用所以这里是一个很简单的表单. <!DOCTYPE html> <html xmlns= ...
- 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置
我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...
- 在 ASP.NET MVC 应用中使用 NInject 注入 ASMX 类型的 Web Service
这几天,有同学问到为什么在 ASP.NET MVC 应用中,无法在 .ASMX 中使用 NInject 进行注入. 现象 比如,我们定义了一个接口,然后定义了一个实现. public interfac ...
随机推荐
- js 日期格式 转换 yyyy-MM-dd
之前js获取到数据库的Date,总是显示成: 后来知道是js 的Date 格式不能直接转换常用的yyyy-MM-dd 的格式 Date.prototype.yyyymmdd = function () ...
- Linux软件包管理之RPM命令
目录 1.Linux软件包分类 一.源码包 二.二进制包 2.rpm 包命名规则 3.rpm包安装 4.rpm包升级 5.rpm包卸载 6.查询rpm包是否安装 7.查询软件包的详细信息 8.查询软件 ...
- 【InfluxDB】InfluxDB学习实践笔记
InfluxDB是用Go编写的一个开源分布式时序.事件和指标数据库,无需外部依赖.它与Elasticsearch.Graphite等类似.比较适用于与事件紧密相关的数据,例如实时日志数据.实时监控数据 ...
- ASP.NET-FineUI开发实践-18
Grid编辑下垃级联 看了看专业版的例子,分为以下几步,都是前端的 1.编辑父下拉框后,重置子下拉框 2.编辑子下垃框前,通过父下垃框数据得到下垃项,然后绑定数据 所以这里要截取Grid的两个事件,编 ...
- SpringBoot快速引入第三方jar包
工作中,我们常会用到第三方jar包,而这些jar包往往在maven仓库是搜不到的,下面推荐一种简单.快速的引入第三方依赖的方法: 比如第三方jar包在lib文件夹下,对pom.xml的配置如下: &l ...
- Redis 缓存应用实战
为了提高系统吞吐量,我们经常在业务架构中引入缓存层. 缓存通常使用 Redis / Memcached 等高性能内存缓存来实现, 本文以 Redis 为例讨论缓存应用中面临的一些问题. 缓存更新一致性 ...
- MySQL Router实现MySQL的读写分离
1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...
- 基于mvc三层架构和ajax技术实现最简单的文件上传
前台页面提交文件 <!DOCTYPE html> <html><head> <meta name="viewport" content=& ...
- MySQL添加列、删除列,创建主键等常用操作总结
一. 列常用操作 ① 添加新的一列test_column,并将其作为主键,FIRST将其放在表中第一行,auto_increement是自动增长 alter table test_table add ...
- 模拟获取post数据的方式
使用下面两种方法可以获取post数据 .通过$HTTP_RAW_POST_DATA获取 $post=$GLOBALS['HTTP_RAW_POST_DATA']; 但需要修改相应的php.ini指令 ...