zoukankan      html  css  js  c++  java
  • C# 初学者指南 笔记

    5种类型

    结构
    枚举
    接口
    委托

    如何选择数据类型

    1. 确定该类型是数字或非数字 如果不是数字,可以选择bool,char,string,
    2. 使用占空间最小的类型

    变量
    两种数据类型

    1. 引用数据类型:提供了对对象的引用
    2. 基本类型:保存了一个基本数据

    变量也是一个名称或一个标识符,标识符在作用域内必须是唯一的

    直接量
    基本类型直接量

    1. 整型直接量
    2. 浮点型直接量
    3. float 8. 小数后加f/F
    4. double 8. 小数后加d/D,或不加
    5. 字符型直接量
      单引号括起来
    6. 布尔型直接量
      boolean x = true
      字符串直接量
      null直接量

    类型转换
    宽化转换 :后者一样大或更大 隐式进行
    窄化转换 :后者更小 必须显式进行 在圆括号中指定目标类型 ,可能会导致信息丢失
    long a = 10;
    int b = (int) a; //窄化转换

    运算符

    递增运算符
    前缀
    int x = 4;
    int y = ++x;
    // y = 5, x = 5
    后缀
    int x = 4;
    int y = x++;
    //y = 4, x = 5

    取反 !
    按位求补运算符 ~

    Sizeof 运算符,获取一个数据类型的字节长度,sizeof(int) 返回4

    位移运算符 <<,>>,>>>

    条件运算符
    &&, ||, ?:
    逻辑运算符
    & | ^

    提升
    有些一元运算符(如+,-和~)和二元运算符(如+,-,*,/)会导致自动提升
    byte x = 5;
    byte y = -x; //错误, - 导致-x的结果提升为int
    需要改为
    byte x = 5;
    byte y = (byte)-x;

    注释 /* 注释内容 */ , // 注释内容

    标签:来标记一条语句和一个语句块
    标记sectionA
    sectionA: y+1
    标记一个块
    start:
    {
    //语句
    }

    if (booleanExpression)
    {
    statement(s)
    }

    if (booleanExpression)
    {
    statment(s)
    }
    else
    {
    statment(s)
    }

    内存中的对象
    程序运行时会给数据分配一些内存空间,这些数据空间逻辑上分为两部分,栈和堆,栈中分配值的类型,堆中存储对象

    命名空间
    为了在一个命名空间中使用类型,要在文件开始的地方使用using指令。

    C# 通过访问控制来实现封装,访问控制通过修饰符来管理。四种修饰符:public,protected,internal,private
    默认情况下类是internal的,除非声明为public。其它任何命名空间中的类型都可以访问public类,internal类只允许同一个命名空间
    内的其它类型访问。
    默认命名空间的类可以被任意其它命名空间中的任何类型访问,即使这个类不是public的
    public 访问不受限制
    protected 访问仅限于包含类或从包含类派生的类型
    internal 访问仅限于当前程序集
    protected internal 访问仅限于当前程序集或从包含类派生的类型
    private 访问仅限于包含类

    using 语句必须放在命名空间内,类声明前

    在静态方法内部,不能调用实例方法或实例字段,因为它们只有在创建对象之后才存在
    可以从一个静态方法访问另一个静态方法或字段
    Main方法就是静态的
    初学者经常遇到的一个问题就是,在Main方法中调用了实例成员
    如果要在静态方法中调用非静态字段,有两张解决方案

    1. 使这个字段为静态的
    2. 创建一个类的实例,然后用该对象引用访问该字段

    方法重载

    字符串直接量开始和结束都用双引号

    is-a 关系
    把子类的一个实例赋予父类的一个引用变量合法
    Animal animal = new Bird(); //合法
    Dog dog = new Animal(); //不合法
    在C#中,使用一个引用变量调用一个方法实际调用的是在该类型中的方法而不管所引用的对象是什么类型

    public 访问不受限制
    protected 访问仅限于包含类或从包含类派生的类型
    internal 访问仅限于当前程序集
    protected internal 访问仅限于当前程序集或从包含类派生的类型
    private 访问仅限于包含类
    
    using 语句必须放在命名空间内,类声明前
    
    在静态方法内部,不能调用实例方法或实例字段,因为它们只有在创建对象之后才存在
    可以从一个静态方法访问另一个静态方法或字段
    Main方法就是静态的
    初学者经常遇到的一个问题就是,在Main方法中调用了实例成员
    如果要在静态方法中调用非静态字段,有两张解决方案
    1. 使这个字段为静态的
    2. 创建一个类的实例,然后用该对象引用访问该字段
    
    方法重载
    
    
    字符串直接量开始和结束都用双引号
    
    is-a 关系
    把子类的一个实例赋予父类的一个引用变量合法
    Animal animal = new Bird(); //合法
    Dog dog = new Animal(); //不合法
    
    在C#中,使用一个引用变量调用一个方法实际调用的是在该类型中的方法而不管所引用的对象是什么类型
    
            using System;
            class Shape
            {
                public void WhatAmI()
                {
                    Console.WriteLine("I am a shape");
                }
            }
            
            class Oval : Shape
            {
                new public void WhatAmI()
                {
                    Console.WriteLine("I am an oval");
                }
            }
    

    Shape shape = new Oval();
    shape.WhatAmI(); // I am shape

  • 相关阅读:
    [Python学习之路] 猜大小游戏
    C语言学生成绩管理系统(简易版)
    malloc动态分配字符串数组“ 一个月内的提醒”
    结构体指针排序
    C语言结构体排序
    数据测压,数据库查询,修改,添加
    badboy脚本录制
    性能测试
    JDK开发环境搭建及环境变量配置(win10)Jmeter之安装和配置
    Charles 修改返回值response(方法 breakpoints)
  • 原文地址:https://www.cnblogs.com/jeff-ideas/p/10540348.html
Copyright © 2011-2022 走看看