C#学习(第二篇)

简介: 在上篇文章中我们学习了C#强大的编程功能、C#发展史、C#开发环境、C#和.Net Framework的关系、C#集成开发环境(IDE)、C#程序结构以及编译并执行程序。而这次我要向大家隆重介绍C#基本语法、C#关键字以及C#数据类型。

C#基本语法

C# 是一种面向对象的编程语言。在面向对象语言编程中,程序由各种对象组成,对象之间可以通过方法进行交互。相同种类的对象通常具有相同的类型,或者说相同种类的对象都在相同的 class 中。

例如,我们创建了一个 Rectangle 对象,用它来表示长方形,Rectangle 对象中具有 length(长)和 width(宽)两个属性。如果我们要计算长方形面积的话,则可以使用一个方法来接收 length 和 width 这两个属性的值,以此来计算这个长方形的面积。

下面我们就来具体实现一下这个 Rectangle 类,代码如下所示:

using System;
namespace c.biancheng.net {
    class Rectangle {
        // 成员变量
        double length;
        double width;
        // 成员函数
        public void Acceptdetails() {
            length = 4.5;  
            width = 3.5;
        }
        public double GetArea() {
            return length * width;
        }
        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }
    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

执行结果如下:

Length: 4.5

Width: 3.5

Area: 15.75

using关键字

以 using 关键字开头的一行代码(例如using System;)可以称为一条 using 语句,几乎所有的 C# 程序都是以 using 语句开头的。using 语句主要用来引入程序中的命名空间,而且一个程序中可以包含多个 using 语句。

class关键字

class 关键字用来声明一个类,后面是类的名字,class 关键字与类名之间使用一个空格分隔。

C#中的注释

注释用于对代码进行解释说明,在编译 C# 程序时编译器会忽略注释的内容。C# 中有单行注释和多行注释两种:

  1. 多行注释
    多行注释以/开头,并以/结尾,//之间的所有内容都属于注释内容,如下所示:
/* C# 教程——多行注释
CSDN
https://www.csdn.net/ */
  1. 单行注释
    单行注释由//符号开头,需要注意的是单行注释没有结束符,而且只对其所在的行有效,//符号之后的所有内容都属于注释内容,如下所示:
//单行注释

成员变量

成员变量是用来存储类中要使用的数据或属性的。在上面的示例程序中,Rectangle 类中包含两个成员变量,分别是 length 和 width。

成员函数

成员函数(也可以称为成员方法)是执行特定任务的语句集,一个类的成员函数需要在类中声明。上面的示例代码中,Rectangle 类包含三个成员函数,分别是 AcceptDetails、GetArea 和 Display。

类的实例化

通过一个已有的类(class)创建出这个类的对象(object)的过程叫做类的实例化。类的实例化需要使用 new 关键字,例如上面示例中第 26 行就创建了一个 Rectangle 类的对象。

标识符

标识符是用来为类、变量、函数或任何其他自定义内容命名。C# 中标识符的定义规则如下所示:

标识符必须以英文字母A-Z、a-z开头,后面可以跟英文字母A-Z、a-z、数字0-9或下划线_;

标识符中的第一个字符不能是数字;

标识符中不能包含空格或特殊符号,例如? - + ! @ # % ^ & * ( ) [ ] { } . ; : " ’ / \,但是可以使用下划线_;

标识符不能是 C# 关键字。

C#关键字

C# 中的关键字是编译器预先定义好的一些单词,也可以称为保留字或者保留标识符,这些关键字对编译器有特殊的意义,不能用作标识符。但是,如果您非要使用的话也不是没有办法,只需要在关键字前面加上@前缀即可,例如@if就是一个有效的标识符,而if则是一个关键字。

在 C# 中,有些关键字在代码的上下文中具有特殊的意义,例如 get 和 set,这样的关键字被称为上下文关键字(contextual keywords)。一般来说,C# 语言中新增的关键字都会作为上下文关键字,这样可以避免影响到使用旧版语言编写的 C# 程序。

C#数据类型

C# 语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型,C# 中的数据类型可以大致分为三类:

  • 值类型(Value types);
  • 引用类型(References types);
  • 指针类型(Pointer types)。

值类型

C# 中的值类型是从 System.ValueType 类中派生出来的,对于值类型的变量我们可以直接为其分配一个具体的值。当声明一个值类型的变量时,系统会自动分配一块儿内存区域用来存储这个变量的值,需要注意的是,变量所占内存的大小会根据系统的不同而有所变化。

C# 中的值类型有很多,如下表所示:

image.png

如果想要获取类型或变量的确切大小,可以使用 sizeof 方法,示例代码如下:

using System;
namespace c.biancheng.net{
    class Program {
        static void Main(string[] args) {
            Console.WriteLine("int 类型的大小为: {0}", sizeof(int));
            Console.ReadLine();
        }
    }
}

编译并执行上述代码,运行结果如下:

int 类型的大小为: 4

引用类型

引用类型的变量中并不存储实际的数据值,而是存储的对数据(对象)的引用,换句话说就是,引用类型的变量中存储的是数据在内存中的位置。当多个变量都引用同一个内存地址时,如果其中一个变量改变了内存中数据的值,那么所有引用这个内存地址的变量的值都会改变。C# 中内置的引用类型包括 Object(对象)、Dynamic(动态)和 string(字符串)。

1.对象类型(Object)

对象类型是 C# 通用类型系统(Common Type System:CTS)中所有数据类型的最终基类,Object 是 System.Object 类的别名。任何类型的值都可以分配给对象类型,但是在分配值之前,需要对类型进行转换。

将值类型转换为对象类型的过程被称为“装箱”,反之将对象类型转换为值类型的过程则被称为“拆箱”。注意,只有经过装箱的数据才能进行拆箱。

2.动态类型(Dynamic)

您可以在动态类型的变量中存储任何类型的值,这些变量的类型检查是在程序运行时进行的。动态类型的声明语法如下所示:

dynamic <variable_name> = value;

例如:

dynamic d = 20;

动态类型与对象类型类似,但对象类型变量的类型检查是在编译时进行的,而动态类型变量的类型检查则是在程序运行时进行的。

3) 字符串类型(String)

字符串类型的变量允许您将一个字符串赋值给这个变量,字符串类型需要通过 String 类来创建,String 类是 System.String 类的别名,它是从对象(Object)类型中派生的。在 C# 中有两种定义字符串类型的方式,分别是使用" “和@” "。

示例代码如下:

//使用引号的声明方式

String str = "https://www.csdn.net/";
//使用 @ 加引号的声明形式
@"https://www.csdn.net/";

使用@" "形式声明的字符串称为“逐字字符串”,逐字字符串会将转义字符\当作普通字符对待,例如string str = @"C:\Windows";等价于string str = "C:\\Windows";。

另外,在@" "形式声明的字符串中可以任意使用换行,换行符及缩进空格等都会计算在字符串的长度之中。

指针类型

C# 语言中的指针是一个变量,也称为定位器或指示符,其中可以存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针具有相同的功能。

指针类型的声明语法如下所示:

type* identifier;

例如:

char* cptr; int* iptr;

这里大家只需要简单的了解一下指针即可,我们会在后面详细介绍。

相关文章
|
6月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
6月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
|
6月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
6月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
6月前
|
存储 C#
C#学习系列相关之数组(一)---数组的定义与使用
C#学习系列相关之数组(一)---数组的定义与使用
|
5天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
1月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
6月前
|
C#
C#的基本语法结构学习
【5月更文挑战第17天】C#基础语法包括变量(如`int x = 10`)、常量(`const int MAX_VALUE = 100`)、运算符(如算术和比较运算符)、控制语句(if、for、while等)和函数声明(`int Add(int x, int y) { return x + y; }`)。这些构成C#程序的基本元素。
75 0
|
2月前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
92 2
|
3月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
C#/.NET/.NET Core推荐学习书籍(24年8月更新)