C#教程3:基本语言结构

17 篇文章 0 订阅

在 C# 教程的这一部分中,我们介绍了 C# 语言的基本编程概念。我们介绍非常基本的程序。我们使用变量、常量和基本数据类型。我们读写控制台;我们提到了变量插值。

一、 C# 常规示例

Program.cs
using System;

namespace Simple
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("This is C#");
        }
    }
}

程序将“This is C#”消息打印到控制台。我们逐行解释。

using System;

using 关键字将特定的命名空间导入我们的程序。创建命名空间是为了对命名实体进行分组和/或将命名实体与其他实体区分开来。这可以防止名称冲突。此行是 C# 语句。每个语句都以分号结束。

namespace Simple

我们声明一个命名空间。命名空间用于组织代码并防止名称冲突。

class Programe
{

}

每个 C# 程序都是结构化的。它由类及其成员组成。类是 C# 程序的基本构建块。上面的代码是一个类定义。定义有一个主体,以左花括号 { 开始,以右花括号 } 结束。

static void Main(string[] args)
{

}

Main是一种方法。方法是为完成特定工作而创建的一段代码。我们不是将所有代码都放在一个地方,而是将其分成几部分,称为方法。这为我们的应用程序带来了模块化。每个方法都有一个主体,我们在其中放置语句。方法的主体用大括号括起来。

Main 方法的具体工作是启动应用程序。它是每个控制台 C# 程序的入口点。该方法被声明为静态的。无需创建 Program 类的实例即可调用此静态方法。首先我们需要启动应用程序,然后,我们可以创建类的实例。 void 关键字表示该方法不返回任何值。 (方法可能会也可能不会返回值。)

Main 方法有 args 参数,它存储命令行参数。通过命令行参数,程序的用户可以传递它的值。

Console.WriteLine(“This is C#”);

在此代码行中,我们将“This is C#”字符串打印到控制台。要将消息打印到控制台,我们使用 Console 类的 WriteLine 方法。该类代表控制台应用程序的标准输入、输出和错误流。请注意,Console 类是 System 命名空间的一部分。这一行是使用 using System 导入命名空间的原因;陈述。如果我们不使用该语句,我们将不得不使用 WriteLine 方法的完全限定名称:System.Console.WriteLine(“This is C#”);。

$ dotnet run
This is C#

二、近代简化的C#示例

多年来,C# 得到了显着改进和简化。对于初学者来说,该语言变得更加平易近人。

Program.cs

namespace Simple;

class Program
{
static void Main(string[] args)
{
Console.WriteLine(“This is C#”);
}
}

从 C# 10 开始,我们可以省略 using System;陈述。它会自动包含在隐式使用中。

namespace Simple;

此外,命名空间声明也可以减少(C# 10)。这称为文件范围的命名空间,它减少了对块和缩进的需求。


使用顶级语句 (C# 9),我们可以进一步简化代码。我们不需要使用 Main 方法作为起点,代码也不必放在应用程序类中。

**Note:**Only one file in the application may use top-level statements.

对于小程序,我们也可以省略命名空间声明。

Program.cs

Console.WriteLine(“This is C#”);

现在,原来的 12 行代码示例被缩减为单行代码。

三、C# 控制台读入数据

我们也可以使用 Console 类来读取值。

Program.cs

Console.Write("Enter your name: ");

string name = Console.ReadLine();
Console.WriteLine($“Hello {name}”);

第二个程序从控制台读取一个值并打印出来。

string name = Console.ReadLine();

我们从终端读取了一行。当我们按下 Enter 键时,输入被分配给 name 变量。输入存储在名称变量中,该变量声明为字符串类型。

Console.WriteLine($“Hello {name}”);

在此代码行中,我们进行字符串格式化。 {name} 说明符被替换为 name 变量的值。

$ dotnet run
Enter your name: Jan
Hello Jan

四、C#命令行参数

C# 程序可以接收命令行参数。当我们运行它时,它们遵循程序的名称。 C# 程序在 args 字符串数组中接收命令行参数。

Program.cs

for (int i = 0; i < args.Length; i++)
{
Console.WriteLine($"{args[i]}");
}

命令行参数可以传递给 Main 方法。

for (int i = 0; i < args.Length; i++)
{
Console.WriteLine($"{args[i]}");
}

我们使用 for 循环遍历这些参数的数组并将它们打印到控制台。 Length 属性给出了数组中元素的数量。稍后将更详细地描述循环和数组。

$ dotnet run 1 2 3
1
2
3

我们提供三个数字作为命令行参数,并将它们打印到控制台。

五、C# 变量

变量是存储数据的地方。变量具有名称和数据类型。数据类型确定可以为变量分配哪些值,例如整数、字符串或布尔值。随着时间的推移,程序变量可以获得相同数据类型的各种值。在对变量进行任何引用之前,变量总是被初始化为其类型的默认值。

Program.cs

string city = “New York”;
string name = “Paul”; int age = 35;
string nationality = “American”;

Console.WriteLine(city);
Console.WriteLine(name);
Console.WriteLine(age);
Console.WriteLine(nationality);

city = “London”;
Console.WriteLine(city);

示例中有四个参数

string city = “New York”;

我们声明一个字符串类型的城市变量并将其初始化为“New York”值。

string name = “Paul”; int age = 35;

我们声明并初始化另外两个变量。我们可以将两个语句放在一行上。但是出于可读性的原因,每个语句都应该在单独的行上。

Console.WriteLine(city);
Console.WriteLine(name);
Console.WriteLine(age);
Console.WriteLine(nationality);

我们将变量的值打印到终端。

city = “London”;

我们为城市变量分配了一个新值。

$ dotnet run
New York
Paul
35
American
London

六、变量的键值

可以使用 var 关键字隐式键入方法范围内的变量。变量始终是强类型的,但对于 var,类型是由 C# 编译器从赋值的右侧推断出来的。

Program.cs

var name = “Peter”;
var age = 23;

Console.WriteLine($"{name} is {age} years old");

name = “Jozef”;
age = 32;

Console.WriteLine($"{name} is {age} years old");

Console.WriteLine(name.GetType());
Console.WriteLine(age.GetType());

在程序中,我们有两个隐式类型变量。

var name = “Peter”;
var age = 23;

在作业的左侧,我们使用 var 关键字。名称变量为字符串类型,年龄为 int。类型是从赋值的右侧推断出来的。

Console.WriteLine(name.GetType());
Console.WriteLine(age.GetType());

我们使用 GetType 确定变量的类型。

$ dotnet run
Peter is 23 years old
Jozef is 32 years old
System.String
System.Int32

七 C#列表

虽然变量保存单个值,但可以将多个值添加到集合中。列表是一系列元素,可以通过使用 [] 进行索引操作来访问。可以使用例如遍历列表的元素foreach 关键字。

List 类型位于 System.Collections.Generic 中,它包含在隐式 usings 中。

Program.cs

var words = new List { “stone”, “rock”, “falcon”, “sky” };

Console.WriteLine(words[2]);

Console.WriteLine();

foreach (var word in words)
{
Console.WriteLine(word);
}

在示例中,我们处理了一个单词列表。

var words = new List { “stone”, “rock”, “falcon”, “sky” };

使用新关键字创建一个列表对象。在尖括号 <> 之间,我们指定列表元素的数据类型。该列表使用大括号 {} 内的元素进行初始化。

Console.WriteLine(words[2]);

在这里,我们将第三个元素打印到控制台。 (索引从 0 开始。)

foreach (var word in words)
{
Console.WriteLine(word);
}

使用 foreach 循环,我们遍历列表的所有元素并将它们打印到控制台。在每个循环中,单词变量被赋予列表中的一个元素。

$ dotnet run
falcon

stone
rock
falcon
sky

八、C# 丢弃的语言

丢弃是特殊的只写变量,用于丢弃程序员不感兴趣的值。 _(下划线字符)用于丢弃。

Program.cs

var vals = (1, 2, 3, 4, 5, 6);

(int x, int y, int z, _, _, _) = vals;

Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(z);

该示例定义了一个值元组。通过使用解构操作,我们将元组的值分配给变量。

var vals = (1, 2, 3, 4, 5, 6);

我们定义了一个包含六个值的元组。元组是有序的异构元素的集合。

(int x, int y, int z, _, _, _) = vals;

比如说,我们只对元组的前三个值感兴趣。在赋值的左侧,我们定义了三个变量:x、y 和 y。由于 vals 元组有六个元素,我们需要在左侧也有六个变量。在这里,我们可以将 _ 字符用于其余变量。通过这种方式,我们表明目前这些值对我们来说并不重要,我们不会使用它们。

九、C# 范围函数

Range 方法生成指定范围内的数字序列。第一个参数是序列中第一个整数的值。第二个参数是要生成的连续整数的数量。

Program.cs

foreach(var el in Enumerable.Range(1, 10))
{
Console.WriteLine(el);
}

该示例使用 foreach 循环将值 1…10 打印到终端。整数序列是使用 Range 方法生成的。

十、C# 常量

与变量不同,常量保留其值。一旦初始化,它们就不能被修改。常量是使用 const 关键字创建的。

Program.cs

const int WIDTH = 100;
const int HEIGHT = 150;
int var = 40;

var = 50;

// WIDTH = 110;

在这个例子中,我们声明了两个常量和一个变量。

const int WIDTH = 100;
const int HEIGHT= 150;

我们使用 const 关键字通知编译器我们声明了一个常量。以大写字母书写常量是一种惯例。

int var = 40;

var = 50;

我们声明并初始化一个变量。稍后,我们为变量分配一个新值。

// WIDTH = 110;

这对于常数是不可能的。如果我们取消注释这一行,我们会得到一个编译错误。

十一、C# 字符串格式

从变量构建字符串是编程中非常常见的任务。 C# 有 string.Format 方法来格式化字符串。

Program.cs

int age = 34;
string name = “William”;

string msg = string.Format("{0} is {1} years old.", name, age);
Console.WriteLine(msg);

字符串在 C# 中是不可变的。我们无法修改现有字符串。我们必须从现有字符串和其他类型创建一个新字符串。在代码示例中,我们创建了一个新字符串。我们还使用来自两个变量的值。

int age = 34;
string name = “William”;

Here we define two variables.

string msg = string.Format("{0} is {1} years old.", name, age);

我们使用内置字符串类的 Format 方法。 {0}、{1} 是评估变量的位置。数字代表变量的位置。 {0} 对第一个提供的变量求值,{1} 对第二个变量求值。

$ dotnet run
William is 34 years old.

十二、C#字符串插值

一些动态语言如 Perl、PHP 或 Ruby 支持字符串/变量插值。变量插值是用字符串文字中的值替换变量。 C# 自 C# 6.0 起支持变量插值。

Program.cs

string name = “Peter”;
int age = 34;

string msg = $"{name} is {age} years old";

Console.WriteLine(msg);

在代码示例中,我们使用变量插值构建字符串。

string msg = $"{name} is {age} years old";

字符串以 $ 字符开头,变量在大括号内。

$ dotnet run
Peter is 34 years old

参考地址

C# basics - covering basics of C# (zetcode.com)

QPainter类使用详解_程序猿老樊的博客-CSDN博客_qpainter的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值