C#学习笔记

VS使用:

  1. visual studio msdn:F1
  2. 创建C#项目:控制台应用程序
  3. 调试并运行:F5,需要ReadKey
  4. 直接运行:Ctrl+F5,不需要ReadKey
  5. .cs:C#程序源文件

基本知识

  1. 各种using:调用微软提供的命名空间,命名空间中包含了很多个类
  2. Main方法是程序的入口
  3. C#程序是由类组成的,而不是命名空间
  4. 蓝色的,比如using,namespace,static,void,string,class是关键字,所有关键字都是小写的
  5. 注释:///用在类、方法、属性前面,不能用来解释单个变量
  6. Console.WriteLine();会换行
    Console.Write();不会换行
  7. 标识符只能由英文、数字、下划线组成,开头不能是数字
  8. bool值是true or false

数据类型

数据类型默认值
double0.0
int0
boolfalse
char‘a’
stringnull

数组

  1. 赋值:
	char[,] ch={{'g','b'},{'h','a'}};
	char[,] ch=new char[2,2]{{'g','b'},{'h','a'}};
  1. 获取长度:
    一维
	int[] age=new int[4];
	Console.Write(age.Length);

         二维:GetLongLength():获取多维数组中第几维的长度

	int[,] array = new int[2,2] { { 1,2 },{ 3,4 } };
	Console.WriteLine(array.GetLongLength(0));

foreach的使用

foreach(string x in names)
不可以对x进行赋值,它是迭代变量

	int[] array = new int[] {1,2,3,4,5,6};
    foreach(int i in array)
    {
    	Console.WriteLine(i);
    }

继承

  1. Object类是所有类的基类 只有单继承 就是说 只能声明有一个基类
  2. 如果子类有与基类同名方法(覆盖)则必须用new让编译器知道
  3. 先调用基类构造函数再调用子类的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
    public class Pet
    {
        public string Name;
        public void PrintName()
        {
            Console.WriteLine("Pet's Name is:"+Name);
        }
    }
    public class Dog : Pet { }
    class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            dog.Name = "java";
            dog.PrintName();
            Console.ReadKey();
        }
    }
}

Result:

Pet's Name is:java
  • 隐藏
    数据成员:声明名称、类型相同的成员即可
    函数:声明相同函数前面
    让编译器知道:new
public class Dog : Pet
    {
        new public void PrintName()
        {
            Console.WriteLine("Dog's Name is:"+Name);
        }
    }

Result:

Dog's Name is:java
  • 程序设计的依赖倒置原则:
    程序设计要依赖于抽象类(Pet)而不依赖于具体类(Dog)

多态

  1. 通过指向派生类的基类引用,调用虚函数,会根据引用所指派生类的实际类型,调用派生类中的同名重写函数
  2. 通过一个基类引用指向派生类,但只能访问派生类中的基类部分
 	Pet dog = new Dog();
 	dog.Name = "java";
 	dog.PrintName();
 	Console.ReadKey();

Result:

Pet's Name is:java
  • 虚方法/抽象方法:
  1. 声明virtual的方法是虚方法
  2. virtual方法可以有函数体
  3. virtual方法可以不用让类声明abstract
  4. 派生类中override virtual方法就可以重写
  5. abstract方法不可以有函数体,声明方法后直接分号,比virtual还要虚

  1. abstract抽象类不可以有实例
  2. 有抽象成员的必须声明abstract类
  3. abstract类可以有抽象、非抽象成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值