C#常用及注意点

参考:C#文档

变量、常量、字段、属性

变量,可变化的

字段、属性都是变量

常量

使用关键字const ,常量在声明时必须初始化,且不可变的

prinvate const  int a

字段

private int a

属性

属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。 属性可用作公共数据成员,但它们实际上是称为访问器的特殊方法。 这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性。

private int a {get; set;}

方法重载

参考:

C#方法重载 

构造函数

构造函数概述

  • 如果类没有构造函数,则 C# 将默认自动创建一个无参构造函数,且没有方法体,类被调用时会调用这个无参构造函数
  • 如果类有一个有参构造函数,C#就不会自动创建无参构造函数了,且没有无参构造函数的情况下,类被调用时就会直接调用这个有参构造函数
  • 实例构造函数:new 类名()
  • : this() :调用本类的其他构造函数,也叫构造函数复用

控制器中的构造函数

ASP.NET MVC5控制器的构造函数:

  • 可以有多个构造函数,调用控制器的方法前会把全部构造函数都调用一次
  • 使用依赖注入框架后多控制器中有多个构造函数也没有问题

ASP.NET Core控制器、Razor页面响应类的构造函数:

  • 只能有一个构造函数,多个构造函数会报错,初步认定可能是ASP.NET Core限制了页面响应类和控制器只能有一个构造函数,也有可能是框架中的依赖注入模块有限制
  • 有时间检查asp.net core mvc视图引擎的源码和这个框架依赖注入的源码???

结构

参考:

结构类型

设计指南 - 在类和结构之间选择

设计指南 - 结构设计

类和结构

深拷贝和浅拷贝

深拷贝:复制整个对象了

浅拷贝:只是引用对象,没有复制对象

实例化对象

参考:实例化--百度百科   Java声明对象和创建对象

如这样:class a=new class()

左边是声明对象,右边new是创建对象

声明对象

class a 就是声明对象,此时a是null的,没有开辟空间。

可以用 var a 代替 class a

创建对象

new class()是创建对象,开辟了内存空间。

创建临时对象:如只有new class();时,可以直接使用。

动态类型dynamic与反射

参考:

使用类型 dynamic

动态类型

使用dynamic来简化反射实现,并且提高了性能

C# 中的动态类型--技术译民

动态类型代替反射

动态类型dynamic性能比反射高,尤其是使用频繁的地方,能用动态类型dynamic代替反射的都建议用动态类型

泛型

委托和事件

扩展方法

参考:

扩展方法(C# 编程指南)

如何实现和调用自定义扩展方法(C# 编程指南)

框架设计准则=》成员设计准则=》扩展方法

常用方法

更详细请看:常用方法字典

String

Contains:包含

原文地址:https://www.cnblogs.com/qingyunye/p/14052558.html