C#学习笔记(3)— 语言基础

随机数


数组定义

int[] a= new int[10]; //类型名后加一对方括号

int AL=6;
int a[]=new int[AL]; //动态指定

int[] x={1,2,3,4}; //根据列举的元素个数决定长度
int[] x= new int[]{1,2,3,4};

int[,] a= new int [3,4];

int[,] b={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int[][] b=new int[3][]; //各行的个数可以不同

数组有秩(维数,Rank)与长度(Length)。
Array提供Sort和Reverse这样的静态方法,这些方法用快速排序算法将一维数组中的元素按照升序或降序排列。


方法

参数传递



字符串

(1)规则字符串
[格式]:string 字符串变量名[=字符串初值];

(2)逐字字符串
逐字字符串由@字符后跟双引号括起来的零个或多个字符组成。
[格式]:string 字符串变量名[=@字符串初值];

@字符放到字符串之前表示这是一个逐字字符串,字符串中的转义字符(\)将会被当作普通反斜杠对待。

string 是 System.String 类的别名;String 是最终类(sealed)。

String.Join 方法 (String, String[])

串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。


其他数据类型

1.结构类型,struct
2.枚举类型,enum

    class Program
    {
        enum Season { Spring = 10, Summer, Autumn = 20, Winter };
        static void Main(string[] args)
        {           
            Console.WriteLine((int) Season.Summer); //输出11
            Console.WriteLine((Season)21); //输出Winter

        }
    }

装箱与拆箱(boxing and unboxing)

值类型与引用类型的互换

int i=123; 
object o = i; //Boxing
int k = (int)o; //Unboxing

foreach语句

与for语句类似,都是重复执行指定的一组语句。但foreach语句专门用于遍历数组或对象集合中的每个元素。

能用foreach遍历访问的对象:*需要实现IEnumerable接口或声明GetEnumerator方法的类型。


泛型-优点

特征:内部算法和数据操作保持不变,而实际数据类型可以在使用时指定。

优点:

  • 支持任何类型(包括自定义类型);
  • 减少代码冗余;
  • 类型安全;
  • 性能提高(值类型提高200%,引用类型提高100%);

可空类型

可空类型是System.Nullable<T>结构类型的实例。可空类型可以表示其基础值类型正常范围内的值再加上一个null值。


分部类

反射(Reflection)

  • 反射的用途是在程序或装配件中查找有关类型的信息,或者从装配件中读取元数据。
  • 反射包含的大多数类都在System.Reflection命名空间中。
    常用的类:
    • Type类:查找有关类型的相关信息。
      获取指向给定类型的Type对象有2种常用方式:
      (1)Type t =typeof(double);
      (2)Type t = Type.GetType("System.Double")。
    • Assembly类:在System.Reflection命名空间中定
      义,它允许程序员访问给定装配件的元数据。

Lambda表达式

Lambda表达式是一个可用于创建委托或表达式树类型的匿名函数。
语法为


示例

x=>x*x //输入参数为x,返回x*x
(x,y)=> x == y //输入参数为x和y,返回布尔值
()=SomeMethod() //无参数,返回函数值

自动属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • 本博客内容源于GEEKBAND 一.转换函数 二、命名空间 C++中采用的是单一的全局变量命名空间。在这单一的...
    再想想1991阅读 469评论 0 0
  • 2 构造/析构/赋值运算(续) 条款09:绝不在构造和析构过程中调用 virtual 函数 如果执行BuyTran...
    暗夜望月阅读 367评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 昨天因为某些原因,拜访了一个用户 HM集团,加上今天无意中了解到新媒体圈里的另一位“大佬”--M老大,才惊叹时势造...
    朱全武阅读 255评论 0 1