C#-类 字段 属性 方法 特性
2016-03-27 15:08
316 查看
方法的签名包括参数个数、参数类型、方法返回值
![](http://images2015.cnblogs.com/blog/679411/201603/679411-20160327150804683-1553708952.png)
base和this关键字1.使用base关键字,就可以使用父类中的字段、属性、方法2.一旦父类中存在有参数的构造函数,那么子类就必须使用base来覆盖父类中的构造函数,base取的父类中参数最多的构造函数
构造函数不同的参数会使用不同的构造函数
类的属性 GET、SETpublic string Name { get; }
上一段的意思是:仅仅声明GET取值函数,能在构造函数中设置函数内部的变量,GET只是针对类外部对类的访问限制使用的,在类的内部,对Name是没有限制的,赋值和使用都是可行的,但通常类的内部仅使用内部变量,防止程序意外出错
部分类
只能使用同一种修饰符,其中一类为public,其他类也必须为public。如果其中一个类为抽象类,那合并后整个类都将被视为抽象类,其中一个类为密封类,那合并后整个类都将视为密封类
类型安全
如果两个类型或对象,类型不一样,也不存在继承关系,就不能相互转换
属性
特点:不占内存空间
因为一定要和私有字段配合使用,建立对象后,外部实际上是通过属性调用类内部的字段,这是编译器对属性的特殊处理,为的就是让属性可以灵活的控制输入和输出的字段值,通过属性这种特殊的方法
Readonly[/b]
此关键字定义的字段,只能在初始化或者构造函数中赋值
重要问题
只能在类中声明public protected private等字段属性
[/code]
[/code]
private readonly string SqlConnString => SqlHelper.GetConnSting();
[/code]
特性
[/code]
[/code]为什么在controller里面写这个特性[logAction(ActionMessage="this is Message")];会把特性中的方法都执行呢?
我的理解:这个不是执行,是加载,既然logAction(ActionMessage="this is xxx")可以实现类的赋值,那么说明已经声明了这个类的对象了,继而说明类中的方法已经动态加载到内存中,实现了方法的负载,这应该就是特性在ASP.NET中的应用
来自为知笔记(Wiz)
![](http://images2015.cnblogs.com/blog/679411/201603/679411-20160327150804683-1553708952.png)
base和this关键字1.使用base关键字,就可以使用父类中的字段、属性、方法2.一旦父类中存在有参数的构造函数,那么子类就必须使用base来覆盖父类中的构造函数,base取的父类中参数最多的构造函数
构造函数不同的参数会使用不同的构造函数
类的属性 GET、SETpublic string Name { get; }
上一段的意思是:仅仅声明GET取值函数,能在构造函数中设置函数内部的变量,GET只是针对类外部对类的访问限制使用的,在类的内部,对Name是没有限制的,赋值和使用都是可行的,但通常类的内部仅使用内部变量,防止程序意外出错
部分类
只能使用同一种修饰符,其中一类为public,其他类也必须为public。如果其中一个类为抽象类,那合并后整个类都将被视为抽象类,其中一个类为密封类,那合并后整个类都将视为密封类
类型安全
如果两个类型或对象,类型不一样,也不存在继承关系,就不能相互转换
属性
特点:不占内存空间
因为一定要和私有字段配合使用,建立对象后,外部实际上是通过属性调用类内部的字段,这是编译器对属性的特殊处理,为的就是让属性可以灵活的控制输入和输出的字段值,通过属性这种特殊的方法
Readonly[/b]
此关键字定义的字段,只能在初始化或者构造函数中赋值
重要问题
只能在类中声明public protected private等字段属性
public static readonly man ss = new man("spike"); // 用readonly声明一个类
[/code]
public readonly string s = "spike"; // 用readonly声明一个字段
[/code]
private string SqlConnString => SqlHelper.GetConnSting(); /// VS2015才能用,这两句话是等同的,=>简写了一个readonly
private readonly string SqlConnString => SqlHelper.GetConnSting();
[/code]
特性
[logAction(ActionMessage="this is Message")];
[/code]
public class logAction :ActionFilterAttribute
{
public string ActionMessage { get; set; }
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Write("ActionExecuted"+ActionMessage);
base.OnActionExecuted(filterContext);
}
}
[/code]为什么在controller里面写这个特性[logAction(ActionMessage="this is Message")];会把特性中的方法都执行呢?
我的理解:这个不是执行,是加载,既然logAction(ActionMessage="this is xxx")可以实现类的赋值,那么说明已经声明了这个类的对象了,继而说明类中的方法已经动态加载到内存中,实现了方法的负载,这应该就是特性在ASP.NET中的应用
来自为知笔记(Wiz)
附件列表
函数的签名包括返回值.png相关文章推荐
- C#-反射知识点
- C#-预处理指令
- C#-CLR各版本特点
- C#-反射知识点(转载)
- C#全局键盘检测GetAsyncKeyState
- C#-双问号运算符
- C#-abstract override一起使用
- 创建Graphics对象的方法及使用
- c#为什么需要事件委托
- C#中正则表达式的使用
- C#播放背景音乐常用的四种方式
- C# WinForm程序退出的方法
- C#的隐式类型转换和显式类型转换
- 深入理解 c#堆栈和托管堆
- “未能找到类型或命名空间名称“WebBrowser”(是否缺少 using 指令或程序集引用?)”的解决办法
- c#_具有索引像素格式的图像不支持 SetPixel
- 用C#在windows上操控电脑自带蓝牙(入道指南)
- 【C#】lock语句及在单例模式中应用
- C# - 日志类
- C# - Lee 公共类库