Csharp简介

C# 的发音为 “C Sharp” ,是一门由微软开发并获得了 ECMA (欧洲计算机制造商协会)和 ISO (国际标
准组织)批准的现代的、通用的、面向对象的编程语言。
C# Anders Hejlsberg 及其团队在 .Net Framework 的开发过程中开发,属于 .Net Framework 的一部
分,可以用来编写 .Net 应用程序。 C# 是专为 CLI (公共语言基础结构)设计的, CLI 由可执行代码和
运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
C# 之所以能称为一门被广泛应用的编程语言,原因有以下几点:
·C# 是一种现代的通用的编程语言;
·C# 是面向对象的;
·C# 是面向组件的;
·C# 简单易学;
·C# 是一种结构化语言;
·使用 C# 开发效率很高;
·C# 可以在各种计算机平台上进行编译;
·C# .Net Framework 的一部分
借助 C# 编程语言,我们可以开发不同类型且安全可靠的应用程序,例如:
·桌面应用程序;
·网络应用程序;
·分布式应用程序;
·Web 服务应用程序;
·数据库应用程序等。
编译
C# 语言是一种编译型语言,它的编译过程包括以下几个步骤:
1. 语法分析( Parsing ): C# 源代码在被编译之前,需要进行语法分析,将源代码转换成语法树。语
法分析器会检查源代码是否符合 C# 语言的语法规范,如果有语法错误,则会发出编译错误提示。
2. 语义分析( Semantic analysis ):在语法和词法分析完成后,编译器会进行语义分析,检查源代码
是否符合 C# 语言的语义规范。语义分析器会检查变量的类型、作用域、函数调用等等,如果存在语
义错误,则会发出编译错误提示。
3. 代码优化( Code optimization ):在语义分析完成后,编译器会进行代码优化,使生成的目标代
码更加高效和优化。代码优化包括删除死代码、常量折叠、函数内联等等。
4. 代码生成( Code generation ):最后一步是代码生成,编译器会将优化后的中间代码转换成目标
代码(通常是机器码),并将目标代码输出到磁盘上的可执行文件中。
这些步骤中的前三个是编译过程中最为重要的部分,它们保证了程序的正确性和可靠性,同时也为
后面的代码优化和生成提供了必要的信息。
VS 安装
教程 : https://blog.csdn.net/weixin_45788237/article/details/132023191?spm=1001.2014.3001.550
2
创建 C# 工程
开始使用 -> 创建新的项目 -> 模板选择: C# 控制台应用 (.net framework) -> 创建
解决方案和项目的关系
1. 解决方案和项目都是VS提供的用于管理应用程序的容器
2. 一个解决方案可以包含一个或多个项目
3. 这些项目可以利用解决方案 连接在一起 统一编译统一更新
打开项目的方式
如何启动项目
项目基本结构
注释
就是代码的描述,我们一般会给代码写上描述信息,描述这块代码的意思,注释不会参与代码的执行,
对于编译器来说它是隐身的 ( 不会执行 )
1. 单行: //xxxxx 快捷键 ctrl+k+c 解注释 : ctrl+k+u
2. 多行: /* */ 快捷键:先选中要注释的代码, ctrl+shift+?
3. 三个斜杠: /// 用在方法前或者类前,用来添加解释说明
4. region 注释 这个注释用于划分代码块,主要的作用是告诉编译器该如何折叠代码
VS 的常用快捷键
// ctrl 系列
// z 撤回
// x 剪切
// c 复制
// v 粘贴
// a 全选
// s 保存
// f 搜索
// h 替换
// y 反撤销(撤销过了)
// 不选中文本进行复制、剪切,会复制和剪切当前行
// home end 键:将光标移动到行首和行尾
// shift 字体切换、输入符号
// shift + 字母 输入大写或小写 , 小写模式下 shift+ 字母就是大写,大写模式下
shift+ 字母就是小写
// shift + 鼠标点击 选中
// shift + home end 从当前光标位置选中到行首或行尾
// alt + 上下 移动当前行或者选中的行
// alt + shift + 鼠标点击 插入一列光标
// alt + ctrl + 鼠标点击 插入多个光标
// del 键 删除光标后面的字符
// 启动应用 F5
// 重启应用 ctrl+shift+F5
C# 标识符
标识符是用来识别类、变量、函数或任何其它用户定义的项目。(通俗的说就是类名、变量名、函数名等)在 C# 中,命名必须遵循如下基本规则:
1. 标识符由字母、数字、下划线( _ )组成。
2. 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _
)、 @
3. 标识符中的第一个字符不能是数字。
4. 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ’ / \
5. 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如, @if 是有效的标识符,但 if 不是,因
if 是关键字。
6. 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
7. 不能与 C# 的类库名称相同。
C# 标识符
标识符是用来识别类、变量、函数或任何其它用户定义的项目。(通俗的说就是类名、变量名、函数
名等)在 C# 中,命名必须遵循如下基本规则:
1. 标识符由字母、数字、下划线( _ )组成。
2. 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _
)、 @
3. 标识符中的第一个字符不能是数字。
4. 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ’ / \
5. 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如, @if 是有效的标识符,但 if 不是,因
if 是关键字。
6. 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
7. 不能与 C# 的类库名称相同。
C# 关键字

 

 

变量和常量
数据类型
C# 中,变量分为以下几种类型:
·   值类型( 基本数据类型 ) Value types)
· 引用类型(Reference types)
· 指针类型(Pointer types 类型  
值类型( Value types
值类型:数值类型 , 布尔类型 , 字符类型 , 枚举类型 , 结构体
值类型变量可以直接分配给一个值。 它们是从类 System.ValueType 中派生的。
值类型直接包含数据。比如 int char float ,它们分别存储数字、字符、浮点数。当您声明一个 int
型时,系统分配内存来存储值。 

分类

### 数值类型

#### 整数数值类型

- **有符号数**

  - `sbyte` 示例: `sbyte sb = -128;` // sbyte范围是-128到127
  - `int` 示例: `int i = 42;`
  - `short` 示例: `short sh = -32768;` // short范围通常是-32768到32767
  - `long` 示例: `long l = 9223372036854775807L;` // 注意L结尾表示long类型

- **无符号数**

  - `byte` 示例: `byte b = 255;` // byte范围是0到255
  - `ushort` 示例: `ushort us = 65535;` // ushort范围是0到65535
  - `ulong` 示例: `ulong ul = 18446744073709551615UL;` // 注意UL结尾表示ulong类型
  - `uint` 示例: `uint ui = 4294967295U;` // uint范围是0到4294967295

#### 小数数值(浮点数)类型

- **单精度 float** 示例: `float f = 3.14f;` // 注意f结尾
- **双精度 double** 示例: `double d = 3.14159265358979;`

### 布尔类型

- 示例: 
  ```csharp
  bool isTrue = true;
  bool isFalse = false;
  ```

### 字符类型

- 示例: `char c = 'A';`

### 枚举类型

- 示例:
  ```csharp
  enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
  Days today = Days.Monday;
  ```

### 结构体

- 示例:
  ```csharp
  struct Point {
      public int X;
      public int Y;
  }
  Point p = new Point() { X = 10, Y = 20 };
  ```

引用类型( Reference types
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位
置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有: object
dynamic string
对象( Object )类型
object 是所有类型的父类型,也就是说, object 可以存储任意的数据类型 , 对象是 C# 中所有数据类型的终
极基类 ( 父类 ) ,所以对象类型可以存储任意类型的数据 , 可以理解为: object 表示为任意类型
字符串( String )类型
字符串( String )类型 允许您给变量分配任何字符串值。字符串( String )类型是 System.String 类的别
名。它是从对象( Object )类型派生的。字符串( String )类型的值可以通过两种形式进行分配:引号
@ 引号。
动态 (dynamic) 类型
代码示例:

### 引用类型(Reference types)

确实,引用类型存储的是对实际数据的引用,而非数据本身。当您将一个引用类型的变量赋值给另一个变量时,两个变量实际上指向同一块内存。现在,我将为每种内置引用类型提供一个代码示例。

#### 对象(Object)类型

- 示例:
  ```csharp
  object obj = 42; // 存储整数
  obj = "Hello, World!"; // 同一个obj变量现在可以存储字符串
  Console.WriteLine(obj); // 输出: Hello, World!
  ```

#### 字符串(String)类型

- 示例:
  ```csharp
  string str = "Hello, C#!";
  Console.WriteLine(str); // 输出: Hello, C#!
  // 使用 @ 引号可以创建多行字符串或避免转义字符
  string multiLineStr = @"This is a
multi-line string with a ""quote"" in it.";
  Console.WriteLine(multiLineStr);
  ```

#### 动态(Dynamic)类型

动态类型允许您在编译时不知道类型的情况下操作对象。它会在运行时解析类型。

- 示例:
  ```csharp
  dynamic dynObj = "I am a string";
  Console.WriteLine(dynObj); // 输出: I am a string
  
  // 同一个dynObj可以被赋予不同类型的值
  dynObj = 42;
  Console.WriteLine(dynObj); // 输出: 42
  
  // 甚至可以是一个对象
  dynObj = new { Name = "Dynamic Object", Value = 100 };
  Console.WriteLine($"Name: {dynObj.Name}, Value: {dynObj.Value}");
  // 输出: Name: Dynamic Object, Value: 100
  ```

请注意,虽然动态类型提供了灵活性,但也牺牲了静态类型检查的好处,可能导致运行时错误,如果类型使用不当的话。

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C#是一种由C和C++衍生出来的面向对象的编程语言,由微软公司发布。它是一种高级程序设计语言,运行于.NET Framework和.NET Core之上。 C#这个名字的由来是因为微软在开发.NET平台时,需要一种新的编程语言来取代面向过程的C语言,并且更好地支持面向对象编程。C#的开发过程中,微软决定取消面向过程的特性,全面转向面向对象。因此,C#在命名时选择了以C为基础,并在其后加上4个加号的形式,即“C++++”,为了简化表示,最终将其写成了“C#”。而#符号也读作“sharp”,意为锐利、强大,代表了C#作为一种强大的编程语言的特点。 C#是在.NET开发平台上使用的一种编程语言,而.NET平台可以使用多种开发语言,如Visual Basic .NET、Python、J#等,但C#是目前在.NET平台上使用最广泛的一种语言。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C#(Csharp)笔记一——C#简介](https://blog.csdn.net/qq_44544908/article/details/126218605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [c#为什么叫csharp(因为C/C++在先,就起名字为“C++++”,即4个加号,为了简单,就写成了“C#”,这个解释...](https://blog.csdn.net/Rodulf/article/details/72328510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值