• 知识点。


    throw throw ex的区别 

    https://blog.csdn.net/zunguitiancheng/article/details/9006703

    从上面的的调用中可以看出来,throw 能够指定到具体的存在问题的代码位置,而throw ex 不能,你只能知道在这个 try,catch中存在逻辑或者调用出现了问题。

    Uint :无符号类型,不能是负数的值。

    ViewStatehttps://www.cnblogs.com/yintian2/archive/2007/07/25/831287.html

    dynamic (动态类型)https://www.cnblogs.com/qianxingdewoniu/p/5595828.html

    C#  访问修饰符区别https://blog.csdn.net/weixin_43267344/article/details/100924565

    IL:中间语言

    IDE: 集成开发环境

       例如:vs2010,vs2012

    C#、.NET Framework、CLR的关系:https://blog.csdn.net/lidandan2016/article/details/77868043

    const: 原文链接:https://blog.csdn.net/yiyelanxin/java/article/details/72461257

    一、const关键字限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。
    1.用于修改字段或局部变量的声明,表示指定的字段或局部变量的值是常数,不能被修改。
    2.常数声明的类型指定声明引入的成员类型。常数表达式必须产生具有目标类型或可隐式转换为目标类型的值。
    3.常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取值来初始化常量。
    (如果const int a = b + 1; b是一个变量,显然不能在编译时就计算出结果,所以常量是不可以用变量来初始化的。)
    4.常数声明可以声明多个常数。

    public const double x = 1.0, y = 2.0, z = 3.0;

    5.不允许在常数声明中使用static修饰符。
    6.常数可以参与常数表达式。如:

    public const int c1 = 5;
    public const int c2 = c1 + 100;

    二、readonly允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
    1.readonly是在计算时执行的,所以它可以用某些常量初始化。
    2.readonly是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。

    三、const(静态常量)与readonly(动态常量)区别
    1.const字段只能在该字段的声明中初始化;

    readonly字段可以在声明或构造函数中初始化,因此,根据所使用的构造函数,readonly字段可能具有不同的值。 

    2.const字段是编译时常量,而readonly字段可用于运行时常量。

    public static readonly uint a1 = (uint)datetime.now.ticks; 

    3.const默认就是静态的,而readonly如果设置成静态的就必须显示声明。
    4.const对于引用类型的常数,可能的值只能是string和null。readonly可以是任何类型。 

    运算符 ^ 

    有面试过一个console.writeLin(7^ 2)的 没有答对,琢磨之后

    7的二进制是 0111

    2的二进制是 0010

    根据  ^ 是指按位异或

               1和1为0

               1和0为1

               0和0为0

    所以得出来的应该是 0101 为5

     out (输出传递参数)和ref(引用传递参数) 的区别就是在于 

    ref 传递变量之前(变量必须初始化)要是个已经赋值的参数,out可以不需要

    ref 传递之后在方法体内可以选择性重新赋值,out 必须要赋值

    int a = 10;
    int b = 20;
    Console.WriteLine(valuetype.GetValue(ref a, ref b));
    valuetype.GetValues(out a, out b);
    Console.WriteLine("{0},{1}",  a, b);

    params (参数数组)用法补充:

    •  1.带 params 关键字的参数类型必须是一维数组,不能使用在多维数组上;
    •  2.不允许和 ref、out 同时使用;
    •  3.带 params 关键字的参数必须是最后一个参数,并且在方法声明中只允许一个 params 关键字。
    •  4.不能仅使用 params 来使用重载方法。
    •  5.没有 params 关键字的方法的优先级高于带有params关键字的方法的优先级

     案例

    ParamArray param = new ParamArray();
    Console.WriteLine(param.AddElements(12, 23, 34));
    
     class ParamArray
        {
            public int AddElements(params int[] arr)
            {
                int sum = 0;
                foreach (int i in arr)
                {
                    sum += i;
                }
                return sum;
            }
        }
    

    结构体 

    定义

     struct Books
        {
            public string title;
            public string author;
            public string subject;
            public int book_id;
        };
    

    调用

      Books books; 
      books.author = "作者";
      Console.WriteLine(books.author); 
      //会报错,不New时,字段要被赋值 
      Console.WriteLine(books.book_Id);
    
    • 结构可带有方法、字段、索引、属性、运算符方法和事件
    • 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
    • 与类不同,结构不能继承其他的结构或类。
    • 结构不能作为其他结构或类的基础结构。
    • 结构可实现一个或多个接口。
    • 结构成员不能指定为 abstract(抽象)virtual (虚方法)protected(保护访问,只限于本类和子类访问,实例不能访问)。
    • 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
    • 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

    类 vs 结构

    类和结构有以下几个基本的不同点:

    • 类是引用类型,结构是值类型。
    • 结构不支持继承。
    • 结构不能声明默认的构造函数。

    构造函数

    定义

    class ParamArray
    {
       public string Name { get; set; }
         public  ParamArray()
         {
              this.Name = "zhang";
         }
    } 
    

     调用时:这里我并没有对Name 重新赋值,运行后还是输出 "zhang",说明它是在 对象创建时执行,它没有任何返回类型

     ParamArray param=new ParamArray(); 
     Console.WriteLine(param.Name);
    

    析构函数,在名字前加  ~,析构函数是在程序结束时执行,一般时候析构函数里面写的都是一些资源回收之类的东西.

    class ParamArray
    {        
            ~ParamArray()
            {
                this.Name = "sss";
            }
    }
    

     静态类,就是指类前面加(static)关键字

    static class ParamArray
    {
    }
    

    1:静态类不能包含析构函数

    2:静态类中定义构造函数不能加访问修饰符,比如public,private

    3:静态类中定义的方法,属性必须是静态方法

     public static string GetElements(string str)
      {
         return str = "hollow";
      }

     C# 方法默认访问级别 : private 
    C# 类默认访问级别 : internal

  • 相关阅读:
    学长帮帮忙—Beta冲刺(4/7)
    学长帮帮忙—Beta冲刺(3/7)
    【二食堂】二食堂很难排队 博客目录
    【二食堂】Beta
    【二食堂】Beta
    【二食堂】Beta
    【二食堂】Beta
    【二食堂】Beta
    【二食堂】Beta
    【二食堂】Beta
  • 原文地址:https://www.cnblogs.com/shanshuiYiCheng/p/12672216.html
Copyright © 2020-2023  润新知