前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C Sharp(一)

C Sharp(一)

作者头像
1ess
发布2021-11-01 16:04:10
1.5K0
发布2021-11-01 16:04:10
举报
文章被收录于专栏:0x7c00的专栏0x7c00的专栏

C Sharp(一)

發佈於 2018-10-15

之前本来想学习一下 NodeJS,考虑到最近一直在使用 C#(主要使用 .Net Core 的 MVC 和 API),并且之前也仔细地研究过一段时间的 C#,.Net 平台的发展也有上升趋势,最近微软收购 Github,打算整合自己的平台,还有 Visual Studio 这一个宇宙第一 IDE 加持,所以就打算把后台技术栈先放在 .Net 上。 目前的打算是将 C# 的知识都过一遍,再逐渐学习一些常用类库,最后把 ASP.Net Core MVC 和 API 都好好看看。 这次我打算边复习边将 C# 中的概念与其他语言做一下对比,以方便有其他语言基础的同学可以更好地理解在 C# 中的相似概念。

概述


要注意在使用 .Net 进行开发时,我们要知道 Solution 和 Project 的区别:

  • Solution 是针对需求的一个总的解决方案
  • Project 则用来解决具体的某个问题

各类 C# 可编写的程序

  • Console
  • WinForm(old)
  • WPF
  • WebForm(old)
  • WebMVC
  • WCF
  • WF
  • UWP

我们可以使用 C# 写出上述各种类型的应用,有的已经过时了,现在主流使用技术是: WebMVC、WebAPI 以及 WCF。

类型和命名空间

C# 程序的本质是由多个类型声明组成。命名空间则是与某个名称相关联的一组类型声明。(在写 Objective-C 或者 Swift 时,是没有命名空间的概念,所以官方给出的最佳实践是使用前缀的方式来区分不同类型。)

标识符

C# 中标识符规则:

  • 字母和下划线可以出现在任意位置
  • 数字可以放在除了首位的任意位置
  • @字符只可以出现在首位,但不推荐

C# 语言的标识符是大小写敏感的,这一点跟 Objective-C,Swift,JavaScript 都一样。

语句

C# 中的语句必须以分号作为结束标志。 块是由成对的大括号包围的 0 条或多条语句序列,在语法上,相当于一条语句。

  • 在语法上只需要一条语句,而一条语句无法表达时,就需要使用块
  • 某些特定的程序结构只能使用块
  • 虽然简单语句以号结尾,但块后面不跟分号(这样会多解析一条空语句)

字符串插值

新版 C# 可以使用字符串插值,类似 JavaScript 中的字符串插值:

var a = 10; var b = 20; var str = $"a + b= {a + b}";

注释

C# 允许三种注释:

  • 单行注释 //
  • 多行注释 /**/
  • 文档注释 ///

类型,存储和变量


如果要描述程序代码特征的话,我们可以说 C 程序就是一组函数和数据类型,C++ 程序就是一组函数和类,而 C# 则是一组类型声明。

namespace MyProgram { DeclarationOfTypeA DeclarationOfTypeB class C { static void Main() { } } }

类型是一种模板

我们学习 C#,其实就是学习如何创建和使用类型,所以我们需要了解什么是类型。 我们可以把类型想象成创建数据结构的模板,模板本身不是数据结构,但可以描述由改模板构造的对象特征。 类型由下面元素定义:

  • 名称
  • 保存数据成员的结构
  • 一些行为和约束

比如,int 类型:

  • 名称: int
  • 结构: 4 字节
  • 行为: 32 位整数

实例化类型

从模板创建实际对象的过程,就称为实例化该类型。

  • 通过实例化类型创建的对象,可以称为对象,也可以称为实例
  • C# 中,每个数据项都是某种类型的实例

数据成员和函数成员

像 short,long 等这样的类型称为简单类型,只能存储一个数据项。

其他的类型可以存储多个数据项,如数组类型就可以存储多个相同类型的数据项。这些数据项称为数组元素,通过索引来获取每个数组元素。C# 数组这一特征与 Objective-C 相同,与 JavaScript 的特征不同。

然而,另外一些类型可以包含不同类型的数据项,这些类型中的数据项个体称为 成员。 有两种成员:

  • 数据成员
  • 函数成员

预定义类型

C# 提供了 16 种预定义类型,包括 13 种简单类型和 3 种非简单类型。 所有预定义类型由全小写字母组成,预定义的简单类型包括以下 3 种:

  • 11 种数值类型:
    1. 不同长度的有符号和无符号整数类型
    2. 浮点数类型: float 和 double
    3. 高精度小数类型: decimal
  • 1 种 Unicode 字符类型: char
  • 1 种布尔类型: bool

与 Objective-C 或 JavaScript 不同,C# 中的数值类型不具有布尔含义。

3 种非简单类型:

  • string: Unicode 字符数组
  • object: 所有其他类型的基类
  • dynamic

注意: 在 C# 程序中,应使用小写的 C# 类型名称而不是大写的 .Net 类型名称。

用户定义类型

有 6 种类型可以由用户自己创建:

  • class 类型
  • struct 类型
  • array 类型
  • enum 类型
  • delegate 类型
  • interface 类型

类型通过类型声明创建,类型声明包含以下信息:

  • 要创建的类型种类
  • 新类型名称
  • 对每个成员的声明(array 和 delegate 除外,他们没有命名成员)

一旦声明了类型,就可以像预定义类型一样使用了。

预定义类型已经由系统创建好了,我们直接使用即可,而用户定义类型,我们使用前需要先进行声明,再使用。

值类型和引用类型

对于非成员数据的存储(如函数中的局部变量):

  • 值类型存储于栈内存
  • 引用类型的 数据部分 存储于堆内存,引用部分 存放在栈内存

对于成员数据,存储有些不同:

  • 引用类型的 数据部分 始终存放在堆内存
  • 值类型的对象,或者引用类型的 引用部分,可能存储在栈内存,也可能存储在堆内存,取决于执行环境

C# 类型分类

  • 预定义类型: 对于简单类型都是值类型,非简单类型都是引用类型
  • 用户定义类型: struct 和 enum 类型是值类型,其他 4 种是引用类型

变量

C# 提供了 4 中变量:

  • 本地变量
  • 字段
  • 参数
  • 数组元素

变量在使用前必须声明。变量声明完成了两件事:

  • 给变量命名,并关联了一种类型
  • 让编译器为它分配了一块内存

我们还可以直接在声明时初始化变量。 一些类型的变量如果在声明时没有初始化,那么会被自动设置为默认值。 注意: 本地变量和参数不会被自动初始化,类字段,结构字段和数组元素会被自动初始化。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • 各类 C# 可编写的程序
      • 类型和命名空间
        • 标识符
          • 语句
            • 字符串插值
              • 注释
              • 类型,存储和变量
                • 类型是一种模板
                  • 实例化类型
                    • 数据成员和函数成员
                      • 预定义类型
                        • 用户定义类型
                          • 值类型和引用类型
                            • C# 类型分类
                              • 变量
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档