C#学习知识点记录

一前言

想要学习一门上位机GUI编程语音,用作设备调试,经过比对后,最终选择C#.这里做一些记录

二知识点

1.C#是.net框架的一部分。

.net框架是巨大的代码库,包含很多组件,比如windows forms, windows presentation foundation

2.C# 大小写敏感,源文件后缀.cs

3.程序的执行从main方法开始

4.C#中数据类型可以分为值类型,引用类型,指针类型三大类

值类型 char, int之类

byte 表示8位无符号整数

引用类型 不包含存在变量中的实际数据,包含对变量的引用

内置的引用类型有

object, ---可以分配任何其他类型的值,但是分配前要先类型转换,一个值类型转换为对象类型称装箱,对象类型转为值类型称为拆箱 ----类型检查编译时

dynamic, ---可以存储任何类型的值在动态类型变量中, dynamic d = 20; ----类型检查运行时

string --- String str = "runoob.com"; string str = @"C:\Windows"; ---@可以把\当作普通字符--字符串可以任意换行

用户自定义引用类型有:class、interface 或 delegate

指针类型 和C没啥区别

5.C#提供了一些类型转换方法,例如使用 Convert 类、Parse 方法和 TryParse 方法,这些方法可以帮助处理不同的数据类型之间的转换。

Convert类-提供了一组静态方法,可以在各种基本数据类型之间进行转换

string str = "123";

int num = Convert.ToInt32(str);

Parse 方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常

TryParse 方法类似于 Parse,但它不会抛出异常,而是返回一个布尔值指示转换是否成功。

6.Console.WriteLine("a = {2},b = {1},c = {0}", a, b, c);

----C#打印格式要依靠大括号占位符,不像C语言从前到后一一对应

7.入口函数 static void Main(string[] args)----static, 大写的Main不能错

8.作用域

局部变量:方法中定义的---方法里面可见

全局变量:类中定义或命名空间中定义,则类中或命名空间中可见

循环变量作用域:

for (int i = 0; i < 5; i++)

{

// i 在循环体内可见

}

// i 在这里不可见-----这块和C语言是一样的,for里面定义i只能循环体内使用

9.面向对象关键字public--访问修饰符之一,用于声明类、方法、变量等成员的访问权限

修饰类----修饰的类可以备其他任何类访问

修饰方法--修饰的方法可以在类的内部和外部被调用--没有指定显示访问修饰符,,默认访问权限是private

修饰变量--该变量可以在类的内部和外部被访问和修改

访问修饰符

public :所有对象都可以访问

internal:同一个程序集内的对象可以访问

protected: 只有该类对象和子类对象可以访问

private:只有该对象内部可以访问----使用该修饰符,类的实例也不能访问它的私有成员

9.1 构造函数---特殊的方法,用于创建对象时初始化对象的成员,特点如下

命令---名称必须与类名相同

无返回值--没有返回类型,即使是void

调用时机--构造函数在创建对象时自动调用,通过构造函数,可以强制要求调用者在创建对象时提供必要的参数

重载-----一个类可以有多个构造函数(通过参数列表区分),称为构造函数重载---创建对象时可以根据构造函数创建不同功能的对象

注:类会默认提供一个无参构造函数,但是如果定义了有参构造函数,那么就不会自动提供无参的了,除非你显式定义

10.运算符

is 判断对象是否为某一类型 if(FORD is Car)----检查Ford是否是Car类的一个对象

11.参数传递

值传参-----复制参数的实际值给形式参数,不改变实参的值

引用传参---引用参数是对一个变量的内存位置的引用,会改变实参的值,用ref声明

输出传参---用out声明输出参数,当需要从一个参数没有指定初始值的方法中返回值时,特别有用

12 nullable可空类型(?)

c#提供的特殊类型,可以表示在其基础类型正常范围内的值,再加上一个null值

eg:int? num = null;

int? num1 = 45;

double? num2 = new double?();

null合并运算符(??)

eg:C = A ?? B-----若A为null,则C = B,否则C = A;

13 数组

int[] a = new int[10];---创建拥有10个元素的数组a;

int[] a = new int[10] {0,1,2,3,4,5,6,7,8,9};---创建拥有10个元素的数组a,并赋初值;

int[] b = a;-----把数组a赋值给数组b,指向相同的内存位置

14 foreach循环和for循环区别---foreach(int data in a){}

foreach 无需索引就能遍历数组所有元素,只读---用于仅遍历不修改数组元素的场合

for循环 需要索引才能遍历数组所有袁旭,可读写---用于需要改写数组元素的场合

15 string

(1)string message = String.Join(" ", sarray);

这行代码使用 String.Join 方法将数组 sarray 中的所有字符串连接成一个单一的字符串,并用空格 " " 作为分隔符。

String.Join 是 C# 中的一个静态方法,用于将数组或集合中的字符串元素连接成一个新的字符串,并可以指定分隔符。

(2)string类属性

Chars 在当前String对象中获取Char对象的指定位置

Length 在当前的String对象中获取字符数

(3)string类方法----有很多,比如比较,转换大小写等

using System; ----using引入命名空间

using System.Text;有啥差别

---C#中引入父级命名空间,并不会自动导入子命名空间

17.结构体使用起来和C没啥差别

struct Child

{

public string name;

public int age;

public string country;

复制代码
}
结构体可以定义构造函数,但是不能定义无参构造函数,无参构造函数默认是自动定义得,且不能改变;
      不能继承其他得结构和类
	  结构体赋值是复制整个结构,而类复制是复制的引用

18.枚举

enum len

{

width,

height,

}---差别C语言使用可以直接使用成员,但是C#则要类似于结构体的形式,len.width

19.类

类的默认访问标识符是internal,成员的默认访问标识符是private

析构函数

隐式调用

~类名()----无返回值,也没有参数,程序结束之前释放资源

20 类的静态成员

类中的变量即属性,如果被定义为静态的,那么无论创建多少个类的实例,都只有一个该静态成员的副本,类似于全局变量

类中的方法如果声明为static,那么这个方法只能访问静态变量,静态方法再对象被创建之前就存在

21 类的继承:基类(父类)和派生类(子类)

一个类可以继承自另一个类,C#不支持多重继承,但支持接口的多重继承

class BaseClass

{

public void meth()

{}

}

class child : BaseClass-------子类可以继承父类的成员,除非父类中明确标记为私有private

{

public void OtherMeth()

{

base.meth ----可通过base关键字访问父类中的方法

}

}

22 类的多态

静态多态

函数重载:多个方法,名称相同,参数个数或类型不同

运算符重载

动态多态

abstract抽象类

特点:

(1)不能实例化,只能被继承

(2)可以部分方法实现,部分像接口一样不实现,交给子类去实现

(3)不实现的方法只能声明为抽象方法,抽象方法只能在抽象类里面声明

(4)可以在类前面放关键字sealed,声明为密封类,密封类不能被继承

virtual虚方法

特点:

(1)类中用关键字virtual声明

(2)可以在不同的继承类中有不同的实现

23 接口 类和接口都可以继承别的接口

interface Imyinterface ----关键字interface

{

void fun(); ------只是一个声明,没有实现

}

class Imple : Imyinterface

{

public void fun() ------类继承接口时,要实现接口中的方法

{

}

}

24 异常

C# 异常是使用类来表示的。C# 中的异常类主要是直接或间接地派生于 System.Exception 类。System.ApplicationException 和 System.SystemException 类

是派生于 System.Exception 类的异常类。

System.ApplicationException 类支持由应用程序生成的异常。所以程序员定义的异常都应派生自该类。

System.SystemException 类是所有预定义的系统异常的基类。

关键字 try catch finally throw

复制代码
try
{
   //执行语句
}
catch(exception A)
{
   //当捕获异常A时,执行相应的异常处理
}
finally
{
  //无论是否出现异常,都会执行的语句
}

25 文件输入与输出

一个文件时存储在磁盘中指定名称和目录路径的集合,当打开文件进行读写时,变成一个流

从根本上说,流时通过通信路径传递的字节序列,有两个主要的流:输入流(读)和输出流(写)

System.IO命名空间有各种不同的类,可以执行各种文件操作,如创建删除文件,读写文件,关闭文件等

-----这个可能要后面实际使用过程中慢慢掌握

26 Thread多线程

线程生命周期

开始于System.Threading.Thread 类的对象被创建时,结束于线程被终止或完成执行时;

进程中第一个被执行的线程称为主线程

Thread类有很多方法和属性,同样这也不是你看一下就能掌握的,后续边用边学

相关推荐
努力学习的小廉几秒前
【C++】 —— 笔试刷题day_21
开发语言·c++·算法
kadog3 分钟前
《Python3网络爬虫开发实战(第二版)》配套案例 spa6
开发语言·javascript·爬虫·python
徒慕风流4 分钟前
利用Python爬虫实现百度图片搜索的PNG图片下载
开发语言·爬虫·python
LVerrrr9 分钟前
Missashe考研日记-day25
学习·考研
风,停下22 分钟前
C#基于Sunnyui框架和MVC模式实现用户登录管理
设计模式·c#·mvc
钢铁男儿23 分钟前
C# 实战_RichTextBox选中某一行条目高亮,离开恢复
开发语言·c#
撬动未来的支点32 分钟前
【网络】TCP/IP协议学习
网络·学习·tcp/ip
丰锋ff32 分钟前
计算机网络学习笔记
笔记·学习·计算机网络
依旧阳光的老码农37 分钟前
Windows下使用 VS Code + g++ 开发 Qt GUI 项目的完整指南
开发语言·windows·qt
等什么君!40 分钟前
SpringMVC处理请求映射路径和接收参数
java·开发语言·spring