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 ...
随机推荐
- leetcode — search-insert-position
/** * Source : https://oj.leetcode.com/problems/search-insert-position/ * * Created by lverpeng on 2 ...
- Win32线程安全问题.同步函数
线程安全问题.同步函数 一丶简介什么是线程安全 通过上面几讲.我们知道了线程怎么创建.线程切换的原理(CONTEXT结构) 每个线程在切换的时候都有自己的堆栈. 但是这样会有安全问题. 为什么? 我 ...
- 开发-封闭原则(OCP)
1.什么是“开放-封闭” 随着软件系统规模的不断增大,软件系统的维护和修改的复杂性不断提高,这种困境促使法国工程院士Bertrand Meyer在1998年提出了“开放-封闭”(Open-Close ...
- sed修炼系列(二):sed武功心法(info sed翻译+注解)
sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中 ...
- OJ:访问 const 成员函数问题
Description 补足程序使得其输出结果是: 40 #include <iostream> #include <string> using namespace std; ...
- 关于 Uboot 中有趣的 0xdeadbeef 填充
在 Uboot 的 Start.S 中存在以下源码: .globl _start _start: b start_code ldr pc, _undefined_instruction ldr pc, ...
- 伪指令 ADR 与 LDR 的区别
指令简介: adr r0, _start 得到的是 _start 的当前执行位置,由 pc+offset 决定 ldr r0, =_start 得到的是绝对的地址,链接时决定 程序示例: ldr r0 ...
- __EF批量删除
控制器: [HttpPost] public int Delete_All(string Id) { List<int> IDS = new List<int>();//创建l ...
- C#爬虫----Fiddler 插件开发 自动生成代码
哈喽^_^ 一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成封包代码就尤为重要了( ...
- intellij error updating changes svn解决办法
乌龟检出的svn版本为1.8,而1.8在IntelliJ 上跑起来貌似有问题, 经过多次尝试,当Format改为1.7后,问题被解决.