C# 快速入门笔记

简介: C# 快速入门笔记

Chapter 0 前言

Chapter 1 基础

1.1 简介

1.2 环境

1.3 程序结构

1.4 基本语法

1.5 数据类型

1.5.1 value types

1.5.2 Reference types

1.5.2.1 对象(Object)类型

1.5.2.2 动态(Dynamic)类型

1.5.2.3字符串(String)类型

1.5.3 Point types

1.5.4 类型转换

1.6 变量

1.7 常量

1.8 运算符

1.9判断

循环

封装

方法

可空类型

数组

Chapter 2 进阶

特性

反射

属性

索引器

委托

Chapter 0 前言

在学习Modbus时,采用C#写了一个client端,用以模拟TCP通信。设计界面时突然发现这与我之前在Android Studio上用Java写Android APP的过程极其相似。

b5dcdd3ba30de362f4b8678311d03085_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png

这好比你学了PR后再去学LR的感觉是一样的,套路如此相似!


本文在参考菜鸟教程的基础上,进行了精简与相关问题解惑,仅供自己强化学习使用。


Chapter 1 基础

1.1 简介

C# 是由微软开发的一种面向对象的编程语言,是 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。

C#特点有:

现代的、通用的编程语言 面向对象
面向组件 容易学习
容易学习 结构化语言
产生高效率的程序 可以在多种计算机平台上编译
.Net 框架的一部分 强大的编程功能

C# 一些重要的功能:

布尔条件(Boolean Conditions)
自动垃圾回收(Automatic Garbage Collection)
标准库(Standard Library)
组件版本(Assembly Versioning)
属性(Properties)和事件(Events)
委托(Delegates)和事件管理(Events Management)
易于使用的泛型(Generics)
索引器(Indexers)
条件编译(Conditional Compilation)
简单的多线程(Multithreading)
LINQ 和 Lambda 表达式
集成 Windows

1.2 环境

C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。

.Net 框架(.Net Framework)用于开发:

  1. Windows 应用程序
  2. Web 应用程序
  3. Web 服务

C# 开发使用的 IDE:

windows: visual studio 2019(我使用的)

Linux: Mono

当然Visual Web Developer之类的也是可以的。

1.3 程序结构

using System;         //在程序中包含 System 命名空间,一个程序一般有多个using
namespace HelloWorldApplication  //namespace 声明,个 namespace 可以一系列的类
{
   class HelloWorld //一个类
   {
      static void Main(string[] args)      //类方法,main()方法是所有 C# 程序的 入口点。
      {
         /* 我的第一个 C# 程序*/
         Console.WriteLine("Hello World");  //定义在 System 命名空间中的 Console 类的一个方法
         Console.ReadKey();    //等待按键
      }
   }
}

由此可知,一个 C# 程序主要包括以下部分:


1.命名空间声明(Namespace declaration)

2.一个 class

3.Class 方法

4.Class 属性

5.一个 Main 方法

6.语句(Statements)& 表达式(Expressions)

7.注释

注:代码文件以.cs保存,执行无误后会在obj文件夹下生成对应的exe可执行文件。


3087e541c7f21095062cfaaf0b2fe190_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png


3087e541c7f21095062cfaaf0b2fe190_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png

010bb180d4d77755fd976051d6c16675_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png

1.4 基本语法

using 关键字


在任何 C# 程序中的第一条语句都是:using System;


using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。


class 关键字


class 关键字用于声明一个类。


C# 的注释

同C语言


成员变量


变量是类的属性或数据成员,用于存储数据。


成员函数


函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。


标识符


标识符是用来识别类、变量、函数或任何其它用户定义的项目


类的命名必须遵循如下基本规则:


1.标识符必须以字母、下划线或 @ 开头,后面可以字母、数字、下划线、@。

2.标识符必须不包含任何嵌入的空格或符号。

3,标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。

4.标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。

5.不能与C#的类库名称相同。

这些与其他面向对象语言C++,JAVA相似。


关于关键字:


1、C#关键字:用来定义C#语言的字符串记号,它们是对编译器具有特殊意义的预定义保留标识符。


2、上下文关键字:仅在特定的语言结构中充当关键字的标识符。与关键字的不同在于上下文关键字可在其他部分代码中被用作标识符。它不是 C# 中的保留字。

f74669ea496621a5ac7d4b86e6ca5190_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png

1.5 数据类型

1.值类型(Value types)
2.引用类型(Reference types)
3.指针类型(Pointer types)


1.5.1 value types

值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。

dc610e5cd53e65ae2c4a00d657c192b1_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png

1.5.2 Reference types

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。???这不是指针吗?戳我解惑。


换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。


1.5.2.1 对象(Object)类型

对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。


当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。

object obj;
obj = 100; // 这是装箱

1.5.2.2 动态(Dynamic)类型

可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的

声明动态类型的语法:

dynamic <variable_name> = value;

如:

dynamic d = 20;

动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。(是不是与解释型语言、编译型语言的区别有点类似?)


1.5.2.3字符串(String)类型

字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。允许给变量分配任何字符串值。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。

String str = "runoob.com";

一个 @引号字符串:

@"runoob.com";

C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,比如:

string str = @"C:\Windows";

等价于:

string str = "C:\\Windows";


相关文章
|
6月前
|
C# Python
C# 笔记1 - 操作目录
C# 笔记1 - 操作目录
55 0
|
存储 Java C#
c#快速入门~在java基础上,知道C#和JAVA 的不同即可
c#快速入门~在java基础上,知道C#和JAVA 的不同即可
124 0
|
1月前
|
算法 安全 测试技术
C#——刘铁猛笔记
C#——刘铁猛笔记
46 0
|
5月前
|
关系型数据库 C# 数据库
技术笔记:MSCL超级工具类(C#),开发人员必备,开发利器
技术笔记:MSCL超级工具类(C#),开发人员必备,开发利器
54 3
|
5月前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
87 0
|
6月前
|
C# Python
C# 笔记3 - 重载一系列像python那样的print()方法
C# 笔记3 - 重载一系列像python那样的print()方法
50 1
|
6月前
|
存储 C# C++
C# 笔记2 - 数组、集合与与文本文件处理
C# 笔记2 - 数组、集合与与文本文件处理
78 0
|
开发框架 .NET Java
C#零基础小白快速入门指导
前言 本文写给想学C#的朋友,目的是以尽快的速度入门
150 0
|
SQL 开发框架 算法
【读书笔记】《Effective C#》50条建议笔记整理
对《Effective C#:改善C#代码的50个有效方法》一书整理的读书笔记。
28213 5
【读书笔记】《Effective C#》50条建议笔记整理
|
C# 开发工具
C#滑动拼图验证码实现笔记
C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。突发奇想,动手开发一个C#滑动拼图验证码,下面是我开发过程的记录。
C#滑动拼图验证码实现笔记