您的位置:首页 > 编程语言 > C#

C#-类 字段 属性 方法 特性

2016-03-27 15:08 316 查看
方法的签名包括参数个数、参数类型、方法返回值



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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: