• .NET,你真的 知道了吗


    搞清自己是干什么的

        有人问你是做什么的,回答是:"我是做,NET开发的",有的人也会问:"那.NER.是什么?"刚开始我认为是一个开打工具,后认为是一个平台,一个软件环境.

        现在窝火说:.NET是一个概念,是一种构想,或者说是微软的一个梦想.

      .NET 几个特性

        一次编译,到处运行. 首先要说的就是.NET Framework的平台无关性.

        编程语言不再是面试的瓶颈.

        自动内存管理,让我们放心编程. 

        基类库---.NETd开发宝藏.

      变量

        变量代表存储地址.

      常量

        在变量前加上关键字const,就可以指定为常量.

    流程控制

       条件语句

         if语句,switch语句

       循环语句

        for循环,whlie循环,do...while循环,foreach循环.

       跳转语句

        goto语句,break语句,continue语句,return语句.

    int32.TrParse().int32.Parse().ConvertToint32()比较

      >ConvertToint32()在null是不抛出异常,二十返回零.

      >int32.Parse()会抛出异常

      >int32.TrParse()不会抛出异常,会返回true或false来说明解析是否成功.如果解析错误,则out调用方将会得到零值.

    .NET面向对象之门

        继承,封装,多态

      隐藏基类成员C#使用new修饰符来实现隐藏基类成员,

      new有三种实现:    1.隐藏父类成员    2.实例化    3.泛型

    密封类和密封方法(sealed )

      sealed 不能继承  

    interface   方法不能实现 继承子类全部重写
    adstrace 不能实例化 方法能实现 继承子类选择性重写

    委托---"任务书"

      简单的理解委托就如一个"中介"

    什么是委托,为什么要使用委托

      我正在埋头苦写程序,突然想喝水,但是又不想自己去掉杯水而打断自己的思路,于是我就想让女朋友去给我倒水。她去给我倒水,

    首先我得让她知道我想让她干什么,通知她之后我可以继续写自己的程序,而倒水的工作就交给了她。这样的过程就相当于一个委托。

      在程序过程中,当程序正在处理某个事件的时候,我需要另外的程序代码去辅助处理一些事情,于是委托另一个程序模块去处理,

    而委托就可以达到这种目的,我可以利用委托通知另外的程序模块,该去调用哪个函数方法。委托其实就起到了这样一个作用,

    将函数签名传递到了另一个函数中。或许这样讲还是有些模糊,看看后面的具体实例。

    委托的定义

    delegateint Add(int num1,int num2);
    delegatevoid ConvertNum(string result);

      上面是定义两个委托的例子,其实很简单。声明一个委托使用delegate关键字,上面分别是定义的带返回值的委托和不带返回值的委托,

    两个委托都有传递参数,当然也可以不传递参数。其实委托也是一个类,委托派生为System.MulticastDelegate,而System.MulticastDelegate

    又继承System.Delegate,如果你知道这个也就明白委托其实是一个特殊的类。

    委托总结

     委托是一种特殊的对象类型,它定义了方法的类型,使的可以将方法当做另一个方法的参数来进行传递.

    反射----"解剖"

      简单理解反射就是一把手术刀.

    反射就是把一个类(不管你是已知还是未知),可以反射出它的属性、方法、变量等等。
    比如一个类
    public class A
    {
    ...
    }
    我们并不知道它里面有些什么,那么我们可以使用反射了。
    Type t = A.GetType();
    这是类A的Type实例
    然后,通过GetProperties()这个方法,可以找出所有类A里面的“属性”,通过GetMethod()这个方法,可以找出所有类A里面的“方法”!
    例如:PropertyInfo[] proInfo = t.GetProperties(); //找出所有的属性,这是一个集合。
    var methodInfo = t.GetMethod(new Type[] { }); //找到无参数的构造方法
    找出之后,你还可以调用,比如属性取值,你可以再继续使用proInfo[0].GetValue(...)这个方法来取第0号属性的值。
    调用方法是使用Invoke()方法来调用,比如调用这个类的构造方法:object a = methodInfo.Invoke(); 这样就得到了类A的实例。
    还可以找Attribute,和判断类型。
    还有更多的东西,总之语言中的所有东西,都可以和反射一一对应。详细你参考微软的MSDN,关于System.Reflection命名空间。

    .NET开发的几把小刀

      @符号妙用

    一 字符串中的用法

      字符@表示,其后的字符串是个“逐字字符串”(verbatim string)。

      @只能对字符串常量作用。

      1.用于文件路径

    以下是引用片段:
      string s_FilePath ="C:\Program Files\Microsoft.NET\test.txt";

      相当于

    以下是引用片段:
      string s_FilePath =@"C:Program FilesMicrosoft.NET est.txt";

      2.用@表示的字符串能够跨越数行。用于在CS中写JS或SQL代码比较方便。

    以下是引用片段:
      string s_MultiRows = @"Line1 
      Line2 
      Line3"; 
      string s_JavaScript = @" 
      ";

      二 标识符中的用法

      在 C# 规范中, @ 可以作为标识符(类名、变量名、方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符。

      如

    以下是引用片段:
      class @class 
      { 
      public static void @static(bool @bool) { 
      if (@bool) 
      System.Console.WriteLine("true"); 
      else 
      System.Console.WriteLine("false"); 
      } 
      } 
      class Class1 
      { 
      static void M() { 
      clu0061ss.stu0061tic(true); 
      } 
      }

      注意,@ 虽然出现在标识符中,但不作为标识符本身的一部分。

      因此,以上示例,定义了一个名为 class 的类,并包含一个名为 static 的方法,以及一个参数名为了 bool 的形参。

      这样,对于跨语言的移植带来了便利。因为,某个单词在 C# 中作为保留关键字,但是在其他语言中也许不是。

    #define

    使用 #define 定义符号。 当您将符号用作传递给 #if 指令的表达式时,此表达式的计算结果为 true,如下例所示:

    # define DEBUG

    符号可用于指定编译的条件。 可以使用 #if 或 #elif 来测试符号。 还可以使用 conditional 特性执行条件编译。

    可以定义符号,但是无法对符号赋值。 #define 指令必须在使用任何不是预处理器指令的指令之前出现在文件中。

    也可以用 /define 编译器选项来定义符号。 可以用 #undef 来取消定义符号。

    用 /define 或 #define 定义的符号与具有同一名称的变量不冲突。 即,不应将变量名传递到预处理器指令,并且只能用预处理器指令计算符号。

    用 #define 创建的符号范围是在其中定义该符号的文件。

    如以下示例所示,您必须将 #define 指令置于文件的顶部。

    C#
     
    #define DEBUG
    //#define TRACE
    #undef TRACE
    
    using System;
    
    public class TestDefine
    {
        static void Main()
        {
    #if (DEBUG)
            Console.WriteLine("Debugging is enabled.");
    #endif
    
    #if (TRACE)
         Console.WriteLine("Tracing is enabled.");
    #endif
        }
    }
    // Output:
    // Debugging is enabled.
    

      

     

  • 相关阅读:
    什么时候用resultMap,什么时候用resultType?
    Cannot create PoolableConnectionFactory解决思路
    去除list集合中重复项的几种方法-转载
    ORA-02298 定位问题
    命令行退出MySQL和登录MySQL
    CX4-480服务器数据恢复过程(服务器数据恢复通用方法)
    也谈腾讯云的静默损坏
    raid5阵列两块硬盘离线怎么解决
    服务器卷删除初检报告/数据恢复成功率分析
    服务器两块硬盘离线如何恢复数据
  • 原文地址:https://www.cnblogs.com/yangshuaigg/p/3515820.html
Copyright © 2020-2023  润新知