美文网首页Spring.Net
C#基础技能培训-C#图解教程(第四版)

C#基础技能培训-C#图解教程(第四版)

作者: 小米或者黄大仙_fcb5 | 来源:发表于2018-07-19 18:17 被阅读0次

    第二章

    1.标识符

    标识符是一种字符串,且区分大小写

    特点:

    1.字母和下划线可以用在任何位置(a-z、A-Z、_)。【下划线可以开头】

    2.数字不可以放在首位,可以放在其他任何位置。

    3.@只允许放在标识符的首位,虽然允许使用但是不推荐常用。

    延伸:[@在C#中的用法:

    1.忽略转义字符

    例如

    string fileName = "D:\\文本文件\\text.txt";
    
    使用@后
    
    string fileName = @"D:\文本文件\text.txt";
    

    2.让字符串跨行

    例如

    string strSQL = "SELECT * FROM HumanResources.Employee AS e"
    
       + " INNER JOIN Person.Contact AS c"
    
       + " ON e.ContactID = c.ContactID"
    
       + " ORDER BY c.LastName";
    

    使用@后

    string strSQL = @"SELECT * FROM HumanResources.Employee AS e
        INNER JOIN Person.Contact AS c
        ON e.ContactID = c.ContactID
        ORDER BY c.LastName";
    

    3.在标识符中的用法

    C#是不允许关键字作为标识符(类名、变量名、方法名、表空间名等)使用的,但如果加上@之后就可以了

    例如

    public static void @static(int @int)
     {
                if (@int > 0)
                {
                    System.Console.WriteLine("Positive Integer");
                }
                else if (@int == 0)
                {
                    System.Console.WriteLine("Zero");
                }
                else
                {
                    System.Console.WriteLine("Negative Integer");
                }
    }
    

    2.关键字

    关键字是对编译器具有特殊意义的预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个 @ 前缀。例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。

    image

    具体用法与释义

    https://www.cnblogs.com/LS520/p/7115435.html

    https://msdn.microsoft.com/zh-cn/library/x53a06bb(VS.80).aspx

    3.代码的注释

    image

    第三章:类型、存储和变量

    1.预定义类型

    image image

    1.三种非简单类型:

    string:是一个Unicode字符数组

    object:是所有其他类型的基类

    dynamic:使用动态语言编写的程序集时使用

    2.简单类型-11种数值类型

    3.简单类型-非数值类型:char bool

    2.dynamic与var的区别

    var 在编译阶段已经确定类型,在初始化时候,必须提供初始化的值,而dynamic则可以不提供,它是在运行时才确定类型

    1.var声明一个局部变量只是一种简化语法,它要求编译器根据一个表达式推断具体的数据类型

    2.var只能用于声明方法内部的局部变量,而dynamic可用于局部变量,字段,参数

    3.表达式不能转型为var,但能转型为dynamic

    4.必须显式初始化用var声明的变量,但无需初始化用dynamic声明的变量

    例:static void Main(string[] args)

        {
    
            //var 在编译阶段已经确定类型
    
            var number = 3;
    
            //dynamic在编译期间不进行任何的类型检查,而是将类型检查放到了运行期
    
            dynamic dyn = 3;
    
            dyn = "hello world";
    
            //runtime eror
    
            //字符串没有 "fn不存在的方法" 的方法,但在语法检查时通过,不会提示语法错误
    
            var s = dyn.fn不存在的方法();
    
            Console.ReadKey();
    
        }
    

    var实际上是编译期抛给我们的“语法糖”,一旦被编译,编译期会自动匹配var 变量的实际类型,并用实际类型来替换该变量的申明,这看上去就好像我们在编码的时候是用实际类型进行申明的。而dynamic被编译后,实际是一个 object类型,只不过编译器会对dynamic类型进行特殊处理,让它在编译期间不进行任何的类型检查,而是将类型检查放到了运行期。

    3.C#中int和System.Int32理解总结

    int是System.Int32的别名,但是存在争议

    4.什么是委托?

    委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递。委托是一种特殊类型的对象,其特殊之处在于委托中包含的只是一个或多个方法的地址,而不是数据。

    委托虽然看起来像是一种类型,但其实定义一个委托,是定义了一个新的类。

    下面这行代码,定义了一个委托,使用ILDasm.exe查看其生成的IL代码如图所示:

    //定义委托,它定义了可以代表的方法的类型,但其本身却是一个类publicdelegateintmethodDelegate(stringstr);

    image

    由图中红色框线中可以看出,.NET将委托定义为一个密封类,派生自基类System.MulticastDelegate,并继承了基类的三个方法。

    2.委托与函数指针的区别?

    1、安全性:C/C++的函数指针只是提取了函数的地址,并作为一个参数传递它,没有类型安全性,可以把任何函数传递给需要函数指针的地方;而.NET中的委托是类型安全的。

    2、与实例的关联性:在面向对象编程中,几乎没有方法是孤立存在的,而是在调用方法前通常需要与类实例相关联。委托可以获取到类实例中的信息,从而实现与实例的关联。

    3、本质上函数指针是一个指针变量,分配在栈中;委托类型声明的是一个类,实例化为一个对象,分配在堆中。

    4、委托可以指向不同类中具有相同类型返回参数和签名的函数,函数指针则不可以。

    5.** C#中的委托是什么?事件是不是一种委托?**

    答:委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。

     事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托。
    

    6.值类型与引用类型&堆和栈

    https://www.cnblogs.com/zd1994/p/4424329.html

    相关文章

      网友评论

        本文标题:C#基础技能培训-C#图解教程(第四版)

        本文链接:https://www.haomeiwen.com/subject/kstxmftx.html