对象和类型

1. 类和结构

成员 说明
字段
属性
常量
方法
构造函数
析构函数
索引器
运算符
事件
类型(内部类)

成员说明字段属性常量方法构造函数析构函数索引器运算符事件类型(内部类)

  • 属性:

  • 初始化

     public int Age( get; set; )=10
    
  • 访问修饰符

  • 方法

  • 个数可变的参数

      public void Create(parama int[] data){    //do something}
    
  • 静态构造函数

  • 不可变类型:为了减轻多线程的压力,将一些类型定义为不可改变类型,例如string,内容无法改变。

  • 匿名类型

匿名函数和方法一样,当且仅当顺序名称一样时才是一个类。这个类继承自object,改写了equals等方法。

  • 传递参数

  • 按值传递:只能传递值得拷贝进去,不能真正的修改值类型。

  • ref:如果想修改,只能用ref。

  • 返回多个值:

  • out:和ref用法类似。

  • 元组

  • 可空类型:引用类型可以判断是否为空,但值类型却不能。因此引入带布尔值的值类型(可空类型),本质上还是值类型。

      using System;public class Example
      {   
      	public static void Main()   
      	{      
      		Nullable<int> n1 = new Nullable<int>(10);      
      		Nullable<int> n2 = null;      
      		Nullable<int> n3 = new Nullable<int>(20);      
      		n3 = null;      
      		Nullable<int>[] items = { n1, n2, n3 };      
      		foreach (var item in items) 
      		{         
      			Console.WriteLine("Has a value: {0}", item.HasValue);
      			if (item.HasValue) 
      			{            
      				Console.WriteLine("Type: {0}", item.GetType().Name);
      				Console.WriteLine("Value: {0}", item.Value);         
      			}         
      			else 
      			{            
      				Console.WriteLine("Null: {0}", item == null);
      				Console.WriteLine("Default Value: {0}", item.GetValueOrDefault());
      			}         
      			Console.WriteLine();
      		}   
      	}
      }
      // The example displays the following output:
      //       Has a value: True
      //       Type: Int32
      //       Value: 10
      //       Has a value: False
      //       Null: True
      //       Default Value: 0
      //       Has a value: False
      //       Null: True
      //       Default Value: 0
    

可空类型其实就是在值类型的基础上包装了bool判断是否为空,和添加而一些相关的函数。实现方法实际为泛型Nullable<T>,重写的==运算符会先调用HasValue方法判断是否为空,不为空则比较Value属性。

bool result= test_null.HasValue()? test1==test_null.Value:false;
  • 枚举:

  • 枚举可继承值类型:

      public enum MyEnum:int
    
  • Flag标记:

      [Flag]
      public enum MyEnum
    
  • 部分类:MVC中就用到了。

  • 扩展方法:就是扩展已经写好的类,在扩展类中提供该类的新方法。在参数中使用this ClassName a来和需要扩展的类链接。

posted @ 2021-08-03 13:26  none323  阅读(41)  评论(0)    收藏  举报