zoukankan      html  css  js  c++  java
  • C#高级编程第11版

    【1】2.1.1 Hello,World!

    1.

    using static System.Console;
    // ...
    WriteLine("Hello World!");

    提前在文件头申明一些要用到的类,方便下面使用

    2.

    Program类里包含了一个叫Main的方法。每个C#可执行程序(如控制台程序,Windows程序,Windows服务或者Web应用程序)都需要一个入口点——Main方法,注意开头的M是大写的。当程序运行的时候,会首先调用这个方法。这个方法的返回类型只能是空(void)或者整型(int)。

    【2】2.2.1 变量初始化

    1.一次定义多个变量

    int x=10; bool y=true;

    2.C#有两个方法负责确认变量在使用前是否正确初始化:

    • 变量通常是class或者struct里的字段,如果没有显式初始化,当创建变量的时候会尝试给它们赋初值0(class和struct的初值我们延后讨论)。
    • 方法里的局部变量在任何语句使用它们之前必须显式初始化,这种情况下,变量不需要在声明的时候直接赋初值,但是编译器会检查方法里的所有可能赋值的地方,假如在初始化前就对变量进行其他操作,编译器会直接标记一个错误。

    【3】2.2.2 类型诊断

    通过var关键字来进行类型的诊断。

    【4】2.2.3 变量的作用域

    在相同的作用域内,同名变量不能声明两次。

    比如在for循环内外不能重复申明同名变量。

    class-static 可以申明第二个变量,static内的称为内部变量。不是一个level。

    【5】2.2.4 常量

    const int a = 100; //值不能修改

    【6】2.3.1 值类型和引用类型

    从概念上来讲,两者的区别在于值类型是直接存储的变量值,存储在栈(stack)上;引用类型的存储的是一个引用地址,它的实际值存在托管堆(managed heap)上。

    值类型:一个变量独占一片空间。

    引用类型;一片文献,变量A可以引用,变量B也可以引用。变量A、B修改其中的内容,并不会使原来的文献改变。

    L:引用类型的变量设置成null;别名引用

    【7】2.3.3 预定义的值类型

     C#拥有15个预定义的数据类型,包括13个值类型与2个引用类型(string和object)。

    整型8个:sbyte(8位有符号整数),byte(8位无符号整数);int值得是System.Int32;前面+u表示无符号整数。

    16进制数则要求以0x开头。

    二进制数需要以0b开头。

    数字分隔符_

    long l1 = 0x1234_5678_90ab_cedf;
    long l2 = 0x1234567890abcdef;
    Console.WriteLine((l1 == l2).ToString());//true

    浮点数:double、float

    float f = 12.3F;

    Decimal类型:128位高精度浮点数。常用于金融计算

    decimal d = 12.30M;

    布尔值:bool类型

    char类型:表示单字符

    char c = 'A';
    char c = "A"; //无法将类型string隐式地转换成char

    转义字符

    【8】2.3.4 预定义的引用类型

     object类型和string类型

    @字符与$前缀标识

    【9】2.4.1 条件语句

    1.if语句:加入满足某个条件,则...;不满足的话,则...

    作为if的判断条件,只能是true或者false或者返回true/false的表达式,C#不允许使用整型代替。

    2.switch语句:

    switch (integerA)
    {
        case 1:
            Console.WriteLine("integerA = 1");
            break;
        case 2:
            Console.WriteLine("integerA = 2");
            break;
        case 3:
            Console.WriteLine("integerA = 3");
            Console.WriteLine("integerA is not 1 or 2.");
            break;
        default:
            Console.WriteLine("integerA is not 1, 2, or 3");
            break;
    }

    case之后的值必须是常量,case书写的顺序完全没有任何关系。

    【10】2.4.2 循环

    1.for循环:根据指定的判断条件是否为true决定是否进入下一次循环。

    嵌套使用for循环

    2.while循环

    3.do...while循环:先执行循环体,然后再检测condition是否为true。

    4.foreach循环:循环访问一个集合里的所有元素(item)。

    在foreach循环里所有元素都是只读的,你不能进行任何修改操作。

    【11】2.4.3 跳转语句

    1.goto语句:

    switch(country)
    {
        case "America":
            CallAmericanOnlyMethod();
            goto case "Britain";
        case "France":
            language = "French";
            break;
        case "Britain":
            language = "English";
            break;
    }

    2.break语句:break语句可用于跳出像for,foreach,while,do...while和switch的case这样的循环体。

    在嵌套循环里使用了break,它仅仅会跳出它所在的那一层循环体,外部循环依然可以正常使用。

    3.continue语句:当编译器遇到continue的时候,他会中止本次循环,直接开始下一次循环执行。

    4.return语句:通常用于结束一个class的方法,将控制权交回给方法的调用者。如果方法有返回类型,return语句必须返回该类型的值。而如果方法声明为void,则不需要返回任何值,仅仅书写一个return即可。

    【12】2.5.2 命名空间的别名

    using关键字的另外一个用法就是为类和命名空间指定别名。

    using System;
    using Introduction = Wrox.ProCSharp.Basics;
    class Program
    {
        static void Main()
        {
            Introduction::NamespaceExample NSEx = new Introduction::NamespaceExample();
            Console.WriteLine(NSEx.GetNamespace());
        }
    }
    
    internal class Introduction
    {
    }
    
    namespace Wrox.ProCSharp.Basics
    {
        class NamespaceExample
        {
            public string GetNamespace()
            {
                return this.GetType().Namespace;
            }
        }
        
        internal class Introduction
        {
        }
    }
    View Code

    【13】Main()方法

    【14】2.7 使用注释

    1.单行注释://

    2.多行注释:/*...*/

    3.XML注释:

        ///<summary>
        /// Wrox.MathLib.Calculator class.
        /// Provides a method to add two doublies.
        ///</summary>

    一些标签,描述

    【15】2.8 C#预处理器指令

    1.#define 和#undef

    2.#if、#elif、#else 和#endif

    3.#warning 和 # error

    4.#region 和#endregion

    5.#line

    6.#pragma

    【16】2.9.3 命名约定

    Pascal命名法:每个单词的第一个字母通常是大写。

    驼峰命名法(camel casing):第一个单词的首字母使用小写

    在下述的3种情况里建议使用驼峰命名法:

    • 用private声明的私有字段field,然而,这种字段更常用的方式是,前头带下划线;
    • 方法的参数;
    • 区分含有同样名称的包装类型。例如属性和其对应的字段。

    参考博客:https://www.cnblogs.com/zenronphy/p/ProfessionalCSharp7Chapter2.html#211-helloworld

  • 相关阅读:
    Paratroopers 最大流问题 dinic算法 水平有待提高
    Food Delivery 区间dp
    D
    Codeforces 1282A Temporarily unavailable
    PAT 顶级 1017 The Best Peak Shape (35分)(最长上升子序列)
    POJ 2217 Secretary(后缀数组+高度数组)
    团体程序设计天梯赛 L1-011~L1-015
    PAT顶级解题目录
    PAT顶级 1005 Programming Pattern (35分)(后缀数组+基数排序 或 字符串哈希)
    团体程序设计天梯赛 L1-006~L1-010
  • 原文地址:https://www.cnblogs.com/wazz/p/14078777.html
Copyright © 2011-2022 走看看