Net Core教程

.NET(C#)基本理论知识

本文主要是介绍.NET(C#)基本理论知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

.NET(C#)基本理论知识

1.什么是 .NET

      .NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、
       移动应用、桌面应用、Windows WPF、Windows窗体、通用 Windows平台 (UWP)、游戏、物联网 (IoT)、机器学习、控制台应用、Windows服务。.NET类库
       在不同应用和应用类型中共享功能,无论构建哪种类型的应用,代码和项目文件看起来都一样,可以访问每个应用的相同运行时、API和语言功能。

2.NET的概念

     .NET Framework:.NET框架(.NET Framework) 是由微软开发,一个致力于敏捷软件开发(Agile softwaredevelopment)、快速应用开(Rapidapplication 
     development)、平台无关性和网络透明化的软件开发平台。
     C#:C#是由微软开发的基于.NET Framework的一种面向对象的广泛应用的高级编程语言。

3.NET和C#是什么关系?

  1. C#就是为宣传.NET而创立的,它直接集成于Visual Studio .NET中,VB也在.NET 1.0发布后对其进行支持

            所以这两门语言与.NET平台耦合度很高,并且.NET上的技术大多都是以C#编程语言为示例,所以经常就.NET和C#混为一谈(实质
            上它们是相辅相成的两个概念)。
    
  2. ASP.NET 页面之间传递值的几种方式。

    # QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是         
    结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。
    #Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。
    # Session变量 想必这个肯定是大家使用中最常见的用法了,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
    # Cookie对象变量这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放   
    在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。
    #Server.Transfer方法这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面
    中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
    
  3. C#中的委托是什么?事件是不是一种委托?
    委托是一种定义方法签名的类型,可以与具有兼容签
    名的任何方法关联。可以通过委托调用方法。委托用于将方法作为参数传递给其他方法。

      委托的特点:
      委托类似于 C++ 函数指针,但它们是类型安全的。
      委托允许将方法作为参数进行传递。
      委托可用于定义回调方法。
      委托可以链接在一起;例如,可以对一个事件调用多个方法。
      方法不必与委托签名完全匹配。
      (事件是一种特殊的委托。)
    
  4. override与重载的区别

      重载,函数名相同,但参数类型或个数或顺序不同。其用途比如:可读性强;在构造器的时候根据参数初始化你想要的实例;代码维
      护性高,重载的方法,处理逻辑的代码通常都在一个方法里,其他方法通常调用偏多。
      
      override,是重写,字面意思,就是重写某个方法的业务逻辑。最大用途是多态,其实重载也是一种多态,但二种多态有个差别是,
      重载是编译时多态,override是运行时多态
    
  5. 什么是装箱和拆箱?

       装箱:装箱转换是指将一个值类型隐式或显式地转换成一个object类型。
       拆箱:拆箱转换是指将一个对象类型显式地转换成一个值类型。
    
  6. ADO.NET的五大对象

       Connection (连接对象) :用于对数据库的连接操作。传入的参数为连接字符串。
       Commamd (命令对象):用于执行对数据库的操作 ,传入的参数可以为连接字符串或存储过程,也必须传入连接对象的实例。
       SqlDataReader (数据读取对象):用于对数据的读取操作,实例.Read()方法可以返回一个True或者False来判断是否读取到了数据,                                
      DataSet (数据集对象) :该对象类似于在内存中的多张虚拟的表,我们可以动态的添加行,列,数据,对数据库进行更新回传操  作。
     SqlDataAdapter (数据适配器对象):该对象可用于数据库的增删改差操作,一次性将读取到的内容加载到内存中,可以脱离连接进
     行操作,返回到一个DataSet对象
    
  7. C#中值类型和引用类型分别有哪些?(以及区别)

          值类型:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。
          引用类型:数组,用户定义的类、接口、委托,object,字符串。
          
          1.值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
          2.值类型存取速度快,引用类型存取速度慢。
          3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
          4.值类型继承自System.ValueType,引用类型继承自System.Object
          5.栈的内存分配是自动释放;而堆在.NET中会有GC来释放
    
  8. 字段和属性有什么区别

        如果你编写一些控件给别的开发者用,而需要给他们提供“数据绑定”这种傻瓜化的机制,那么使用属性才可以做到. 属性是方法而字   
        段不是,当你用反射去掉用的时候,它们有各自的API。因为属性是方法,所以它可以和方法那样定义在接口中,或    者被继承和重
        写,重写属性被ORM/AOP等框架用来注入代码。
    
  9. 抽象方法和虚方法的区别

        抽象方法一定是虚方法,虚方法未必是抽象方法。虚方法是指可以被继承类重写的方法,而抽象方法是指,基类是抽象类,
        没有实现它,因此必须被继承类重写的方法。
    
  10. new的几种用法

    除了作为创建对象实例的关键字以外,new还有个罕见的用法,就是在派生类定义一个重名的同函数签名的方法,隐藏掉基类的方法。   
    另外就是泛型约束定义构造函数约束的时候用。
    
  11. 什么叫做泛型

      从编程的角度说是在定义类或者方法的时候省去具体的类型,由调用者来指定,类型+泛型类型合成得到真正的类型。
      从实现机制上说,泛型是CLR在运行时动态根据泛型类型创建的匿名类型。从OO设计的角度说,泛型体现了多态性。
      泛型使得程序员可以复用数据结构和算法,并且适应不同的类型,享有编译期间的强类型检查和语法提示。
      一些经典的FCL提供的泛型类型和接口:   List<T>、Dictionary<T1, T2>这个属于复用数据结构IComparer<T>、IEnumerable<T>这个属于复用算法
    
  12. 什么叫做类

      就C#而言,类是对象的模板,对象是类的实例。C#是强类型语言,一切皆需要类型,除了内置的简单类型,那些其实例为引用对象   
      的都叫做类。C#也允许定义抽象类和密封类,以及两者的叠加——静态类,它们都无法实例化,其实这是编译器的限制,本质上它们
      和一般的类没有区别,是特殊情况
    
  13. .net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

       1.QueryString  传递一个或多个安全性要求不高或是结构简单的数值。但是对于传递数组或对象的话,就不能用这个方法了 
       2.session(viewstate) 简单,但易丢失 作用于用户个人,过量的存储会导致服务器内存资源的耗尽。  
       3.application 对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock 
       4.cookie 简单,但可能不支持,可能被伪造 Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合
        ASP.NET内置对象Request来使用 
       5.input ttype="hidden" 简单,可能被伪造 
       6.url参数简单,显示于地址栏,长度有限 
    
  14. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

       接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
    
  15. 启动一个线程是用run()还是start()?

    启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线 
    程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
    
  16. GC是什么? 为什么要有GC?

    GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理
    
  17. c#语言中,结构体和类的区别?

    1.结构是实值类型(Value Types),而类则是引用类型(Reference Types)。
    2.结构使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation)。
    3.所有结构成员默认都是Public,而类的变量和常量数则默认位Private,不过其他类成员默认都是Public。
    4.结构成员不能被声明位Protected,而类成员可以。
    
  18. BS与CS的联系与区别

         1.C/S是客户端需要安装专用的客户端软件,B/S是客户机上只要安装一个浏览器
         2.C/S 一般建立在专用的网络上,C/S更强的适应范围,
         3.C/S比B/S更安全。
         4.C/S可以控制本机的其他程序、可以读写本地磁盘文件、可以与硬件交互。
         5.B/S很难和本地硬件、程序、文件进行交互
    
  19. post、get的区别

        1.post的参数不会显示在浏览器地址栏中,get的参数会显示在浏览器地址栏中
        2.用post可提交较大的数据量,get提交的数据量则非常小(2k)
        3.用post可进行文件的提交,而用get则不可以
    
  20. 堆和栈的区别?

      堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上
      栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
    
  21. StringBuilder 和 String 的区别?

     1.StringBuilder 是可扩展的,在大量字符串拼接时使用
     2.String 在进行运算时会产生一个新的实例
    
  22. MVC模式

      MVC(Model-View-Controller)把交互系统的组成分解成模型(Model)、视图(View)、控制器(Controller)三种部件
    
这篇关于.NET(C#)基本理论知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!