C#复习-基础篇

C#复习-基础篇


最近要考.Net,就顺便总结了下相关概念,并提供了相关例题。如有错误或不当之处,请赐教。

一、基础代码块

1.1 基本程序结构

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
        
        }
    }
}

注意:Main函数在每个项目中以单例形式存在,入口在Program类中。

1.2 输出"Hello, Wang!"

  • 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, Wang!"); // 向控制台输出内容
            Console.ReadKey(); // 保持焦点,如果没有使用此语句,程序运行完成后立即终止
        }
    }
}

  • 结果

Hello, Wang!

1.3 改变控制台输出颜色

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green; // 改变控制台输出颜色为绿色
            Console.WriteLine("Hello, Wang!"); // 向控制台输出内容
            Console.ReadKey(); // 保持焦点,如果没有使用此语句,程序运行完成后立即终止
        }
    }
}
  • 结果

在这里插入图片描述

二、数据类型

2.1 分类

2.1.1 值类型

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

类型 描述 默认值
bool 布尔值 False
byte 8 位无符号整数 0
char 16 位 Unicode 字符 ‘\0’
decimal 128 位精确的十进制值,28-29 有效位数 0.0M
double 64 位双精度浮点型 0.0D
float 32 位单精度浮点型 0.0F
int 32 位有符号整数类型 0
long 64 位有符号整数类型 0L
sbyte 8 位有符号整数类型 0
short 16 位有符号整数类型 0
uint 32 位无符号整数类型 0
ulong 64 位无符号整数类型 0
ushort 16 位无符号整数类型 0

2.1.2 引用类型

  • Object(对象类型)

对象(Object)类型是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。

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

  • Dynamic(动态类型)

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

  • String(字符串类型)

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

2.1.3 指针类型

指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。

2.2 类型转换

2.2.1 隐式类型转换

隐式类型转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。

2.2.2 显式类型转换

显式类型转换显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。

一般使用的是System.Convert中的To类型方法完成转换。

三、变量类型

3.1 分类

类型 举例
整数类型 sbyte、byte、short、ushort、int、uint、long、ulong 和 char
浮点型 float 和 double
十进制类型 decimal
布尔类型 true 或 false 值,指定的值
空类型 可为空值的数据类型

3.2 左/右值

  • 左值表达式可以出现在赋值语句的左边或右边。
  • 右值表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。

3.3 常量

常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。

3.3.1 整数常量

整数常量可以是十进制八进制十六进制的常量。前缀指定基数:0x0X 表示十六进制0 表示八进制,没有前缀则表示十进制

3.3.2 浮点常量

浮点常量是由整数部分、小数点、小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量。

注:使用小数形式表示时,必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或同时包含两者。有符号的指数是用 e 或 E 表示的。

3.3.3 字符常量

字符常量是括在单引号里,例如,‘x’,且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 ‘x’)、一个转义序列(例如 ‘\t’)或者一个通用字符(例如 ‘\u02C0’)。

3.3.4 字符串常量

字符串常量是括在双引号 “” 里,或者是括在 @"" 里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符。

3.4 案例

3.4.1 整型

小明的年龄为20岁。

请使用不同位数的整型变量表示并输出他的年龄。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            short sAge = 20;
            int mAge = 20;
            long lAge = 20L;
            Console.WriteLine("16位 "+sAge);
            Console.WriteLine("32位 "+mAge);
            Console.WriteLine("64位 " + lAge);
            Console.ReadKey(); // 保持焦点,如果没有使用此语句,程序运行完成后立即终止
        }
    }
}
  • 结果

在这里插入图片描述

3.4.2 实型

汽车的速度为120.00KM/H。

请使用不同位数的实型变量表示并输出它的速度。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            float fSpeed = 120.00f;
            double dSpeed = 120.00;
            Console.WriteLine("32位{0:N} ", fSpeed); // 0代表第一个参数,也就是后面的fSpeed,N代表以自然数形式输出
            Console.WriteLine("64位{0:N} ", dSpeed);
            Console.ReadKey(); // 保持焦点,如果没有使用此语句,程序运行完成后立即终止
        }
    }
}
  • 结果

在这里插入图片描述

3.4.3 字符串型

小狗的名字叫“Marry”。

请使用字符串型变量表示并输出它的名字。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            string name = "Marry";
            Console.WriteLine("小狗的名字:" + name);
            Console.ReadKey(); 
        }
    }
}
  • 结果

在这里插入图片描述

四、运算符

4.1 算术运算符

设变量A 的值为5,变量B 的值为6。

运算符 描述 实例
+ 把两个操作数相加 A + B 将得到 11
- 从第一个操作数中减去第二个操作数 A - B 将得到 -1
* 把两个操作数相乘 A * B 将得到 30
/ 分子除以分母 B / A 将得到 1.2
% 取模运算符,整除后的余数 B % A 将得到 1
++ 自增运算符,整数值增加 1 A++ 将得到 6
自减运算符,整数值减少 1 A-- 将得到 4

4.2 逻辑运算符

设变量 A 为布尔值 true,变量B为布尔值 false。

运算符 描述 实例
&& 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 (A && B) 为假。
|| 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (A || B) 为真。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 !(A && B) 为真。

4.3 关系运算符

设变量A 的值为5,变量B 的值为6。

运算符 描述 实例
== 检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 不为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (A > B) 不为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (A < B) 为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 (A >= B) 不为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 (A <= B) 为真。

4.4 位运算符

  • 真值表
p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
  • 设变量A的值为6(0110),变量B的值为8(1000)。
运算符 描述 实例
& 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 (A & B) 将得到 0,即为 0000
| 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 (A | B) 将得到 14,即为 1110
^ 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 (A ^ B) 将得到 14,即为 1110
~ 按位取反运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0,包括符号位。 (~A ) 将得到 -7,即为 0111,一个有符号二进制数的补码形式。
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2 将得到 24,即为 0001 1000
>> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即为 0001

4.5 赋值运算符

运算符 描述 实例
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A
<<= 左移且赋值运算符 C <<= 2 等同于 C = C << 2
>>= 右移且赋值运算符 C >>= 2 等同于 C = C >> 2
&= 按位与且赋值运算符 C &= 2 等同于 C = C & 2
^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2
|= 按位或且赋值运算符 C |= 2 等同于 C = C | 2

4.6 案例

4.6.1 算术运算符

超市仓库中有20箱牛奶。

请利用输出语句,变量和运算符处理以下问题(后一个问题以前一个问题解决后,剩余的牛奶数量为基准):

  1. 小明购买了2箱牛奶,计算并输出仓库中剩余牛奶数量。
  2. 超市购入了3箱牛奶,计算并输出仓库中剩余牛奶数量。
  3. 每箱牛奶售价为35元,每天销售2箱,计算并输出周销售额。
  4. 临近节日,超市决定按7折销售牛奶,计算并输出打折后的价格。
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 20;
            number = number - 2;
            Console.WriteLine("小明购买2箱后:" + number);
            number = number + 3;
            Console.WriteLine("超市购入3箱后:" + number);
            int money = 2 * 35 * 7;
            Console.WriteLine("周销售额为:" + money);
            double price = 35 * 0.7;
            Console.WriteLine("打折后的价格为:{0:N}", price);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

4.6.2 关系运算符

设A的值为30,B的值为50。

请利用输出语句,变量和关系运算符处理以下问题。

  1. 比较A和B的值是否相等,利用布尔变量存储结果。
  2. 比较并输出值较大的一方。
  3. 比较并输出值较小的一方。
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 30;
            int b = 50;
            int res = 0; // 存储运算结果
            bool flag = a == b; // 三目运算符,判断A和B是否相等
            string str = flag ? "相等" : "不相等"; // 判断值是否为真,为真则为字符串赋值“相等”,反之,则赋值“不相等”
            Console.WriteLine("A和B的值是否相等:" + str);
            res = a > b ? a : b;
            Console.WriteLine("较大的值为:" + res);
            res = a < b ? a : b;
            Console.WriteLine("较小的值为:" + res);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

4.6.3 逻辑运算符

设A的值为true,B的值为false。

请利用输出语句,变量和逻辑运算符处理以下问题,并且输出。

  1. A && B。
  2. A || B。
  3. !A。
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            bool A = true;
            bool B = false;
            Console.WriteLine(A && B);
            Console.WriteLine(A || B);
            Console.WriteLine(!A);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

4.6.4 位运算符

设A的值为5(0101),B的值为6(0110)。

请利用输出语句,变量和位运算符处理以下问题,并且输出。

  1. A & B。
  2. A | B。
  3. A ^ B。
  4. ~A。
  • 真值表
p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

A的二进制值为0101,B的二进制值为0110,通过位运算后得:

  1. A & B = 0100 = 4
  2. A | B = 0111 = 7
  3. A ^ B = 0011 = 3
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            int b = 6;
            Console.WriteLine(a & b);
            Console.WriteLine(a | b);
            Console.WriteLine(a ^ b);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

五、流程控制

5.1 if语句

  • 语句格式

expression代表条件表达式,statement代表语句体。

可以嵌套(少使用超过三层德的嵌套)。

if(expression){
	statement;
    ...
}
if(expression){
    statement1;
    ...
}
else{
    statement2;
    ...
}
if(expression1){
    statement1;
    ...
}
else if(expression2){
    statement2;
    ...
}
else{
    statement3;
    ...
}

5.2 switch语句

  • 语句格式

switch语句中的value必须是一个整型枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。

可以嵌套(建议少使用嵌套)。

switch(value){
    case value1:
        ...
        break;
    case value2:
        ...
        break;
    default:
        ...
        break;
}

5.3 案例

5.3.1 校验用户名和密码

从控制台输入用户名和密码。

知识点:

  1. 输入输出。
  2. 变量。
  3. 运算符。
  4. 单条件if语句。
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            string username = "wang";
            string password = "123";

            Console.Write("请输入用户名:");
            var user = Console.ReadLine(); // 读取输入的用户名
            Console.Write("请输入密码:"); 
            var pwd = Console.ReadLine(); // 读取输入的密码
            // 验证用户凭证
            if (username.Equals(user) && password.Equals(pwd))
            {
                Console.WriteLine("用户凭证正确!");
            }
            else
            {
                Console.WriteLine("用户凭证错误!");
            }
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

5.3.2 判断成绩所在的等级区间

从控制台输入成绩,限制范围0-100。0-59为D,60-69为C,70-85为B,86-100为A。

知识点:

  1. 输入输出。
  2. 变量。
  3. 运算符。
  4. 多条件if语句。
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入用户成绩:");
            // 读取输入成绩,并转换为32位整型
            int score = Convert.ToInt32(Console.ReadLine());
            // 验证数据有效性, 在0-100区间内则为score,反之为0
            score = score <= 100 && score >= 0 ? score : 0;
            string grade;
            if (score < 60 && score >= 0)
            {
                grade = "D";
            }
            else if (score < 70 && score >= 60)
            {
                grade = "C";
            }
            else if (score < 86 && score >= 70)
            {
                grade = "B";
            }
            else
            {
                grade = "A";
            }
            Console.WriteLine("成绩等级为:" + grade);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

5.3.3 判断当天星期数

从控制台输入整数,然后判断星期数。

知识点:

  1. 输入输出。
  2. 变量。
  3. 运算符。
  4. switch语句。
  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入天数(整型):");
            // 读取输入的值,并转换为32位整型
            int day = Convert.ToInt32(Console.ReadLine());
            // 取模运算,一周有7天,余数为0-6
            int res = day % 7;
            string week;
            switch (res)
            {
                case 0:
                    week = "一";
                    break;
                case 1:
                    week = "二";
                    break;
                case 2:
                    week = "三";
                    break;
                case 3:
                    week = "四";
                    break;
                case 4:
                    week = "五";
                    break;
                case 5:
                    week = "六";
                    break;
                case 6:
                    week = "日";
                    break;
                default:
                    week = "错误!";
                    break;
            }
            Console.WriteLine("当天为星期:" + week);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

六、循环结构

6.1 do…while循环

最少执行一次,当condition为真时执行statement

此语句可嵌套(建议少用超过2层的嵌套语句)。

  • 语句格式
do{
	statement;
    ...
}while(condition);

6.2 while循环

condition为真时执行statement

此语句可嵌套(建议少用超过2层的嵌套语句)。

  • 语句格式
while(condition){
    statement;
    ...
}

6.3 for循环

initVariable为初始化的循环条件变量,relationExpression为关系表达式,calculateExpression为算术表达式。

此语句可嵌套(建议少用超过2层的嵌套语句)。

  • 语句格式
for(initVariable;relationExpression;calculateExpression){
    statement;
    ...
}

6.4 foreach循环

foreach可以迭代数组或者一个集合对象。

  • 语句格式
foreach (type element in collection)
{
    statement;
    ...
}

6.5 案例

6.5.1 利用while语句计算0-100之间的数的总和

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;
            int n = 0;
            while (n <= 100)
            {
                sum += n;
                n++;
            }
            Console.WriteLine("0-100之间的数的总和为:" + sum);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

6.5.2 利用do…while语句计算0-100之间的数的总和

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;
            int n = 0;
            do
            {
                sum += n;
                n++;
            }
            while (n <= 100);
            Console.WriteLine("0-100之间的数的总和为:" + sum);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

6.5.3 利用for语句计算0-100之间的数的总和

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;
            for (int i = 0; i <= 100; i++)
            {
                sum += i;
            }
            Console.WriteLine("0-100之间的数的总和为:" + sum);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

七、数组

7.1 一维数组

7.1.1 简介

数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。

数组是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。

7.1.2 语句格式

type[] arrayName;
type[] arrayName = {};
type[] arrayName = new type[N];
type[] arrayName = new type[]{};

7.2 多维数组

7.2.1 简介

多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。

C# 中的二维数组更像是一个矩阵。

7.2.2 语句格式

type[,] arrayName;
type[,] arrayName = new type[M,N];
type[,] arrayName = new type[M,N]{{},{}};
type[,] arrayName = {{},{}};

7.3 交错数组

7.3.1 简介

交错数组是数组的数组。

交错数组是一维数组。

7.3.2 语句格式

type[][] arrayName;
type[][] arrayName = new type[M][N]{new type[]{},new type[]{}};

7.4 参数数组

7.4.1 简介

声明一个方法时,不能确定要传递给函数作为参数的参数数目,可以使用参数数组

7.4.2 语句格式

[returnType]为返回类型,[methodName]为方法名称。

public [returnType] [methodName]( params type[] arrayName )
{
    statement;
    ...
}

7.5 Array常用方法

方法 描述
Clear 根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。
CopyTo(Array, Int32) 从当前的一维数组中复制所有的元素到一个指定的一维数组的指定索引位置。索引由一个 32 位整数指定。
GetLength 获取一个 32 位整数,该值表示指定维度的数组中的元素总数。
GetType 获取当前实例的类型。从对象(Object)继承。
GetValue(Int32) 获取一维数组中指定位置的值。索引由一个 32 位整数指定。
IndexOf(Array, Object) 搜索指定的对象,返回整个一维数组中第一次出现的索引。
Reverse(Array) 逆转整个一维数组中元素的顺序。
SetValue(Object, Int32) 给一维数组中指定位置的元素设置值。索引由一个 32 位整数指定。
Sort(Array) 使用数组的每个元素的 IComparable 实现来排序整个一维数组中的元素。

7.6 案例

7.6.1 计算数组中元素的平均值

数组中元素的值分别为1, 2, 3, 4, 5, 6, 7, 8, 9 。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int sum = 0; // 用于存储数组元素值的总和
            foreach (int num in numbers)
            {
                sum += num;
            }
            Console.WriteLine("该数组的平均值为:" + sum / numbers.Length); // numbers.Length获取数组长度
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

7.6.2 用多维数组表示矩阵A

A = [ 1 2 3 4 5 6 7 8 9 ] A =\begin{gathered} \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} \quad \end{gathered} A=147258369

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            // 定义该矩阵
            int[,] a = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
            Console.WriteLine("该矩阵为:");
            // 遍历输出该矩阵
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Console.Write(a[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

7.6.3 用交错数组表示矩阵A

A = [ 1 2 3 4 5 6 7 8 9 ] A =\begin{gathered} \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} \quad \end{gathered} A=147258369

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            // 定义该矩阵
            int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 } };
            Console.WriteLine("该矩阵为:");
            // 遍历输出该矩阵
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Console.Write(a[i][j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

7.6.4 利用参数数组为方法传参

现有一组数(1,2,3,4,5,6,7,8,9)作为方法的参数,请计算参数的和。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("参数之和为:"+CalculateSum(1,2,3,4,5,6,7,8,9));
            Console.ReadKey();
        }
        /// 
        /// 计算传入的参数之和
        /// 
        /// 参数数组
        /// 参数之和
        public static int CalculateSum(params int[] numbers)
        {
            int sum = 0;
            foreach (var num in numbers)
            {
                sum += num;
            }
            return sum;
        }
    }
}
  • 结果

在这里插入图片描述

八、结构体

8.1 简介

结构体值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。

8.2 语句格式

[modify operator]为访问控制符,例如public

[modify operator] struct [StructName]{
	[modify operator] variable1;
   	 ...
};

8.3 案例

用户的姓名为wang,年龄为20。

请使用结构体表示用户信息,并输出。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    /// 
    /// 用户信息结构体
    /// 
    struct User
    {
        public string name;
        public int age;
    };
    class Program
    {
        static void Main(string[] args)
        {
            // 声明结构体对象并赋值
            User user;
            user.name = "wang";
            user.age = 20;
            Console.WriteLine("用户姓名为:{0},年龄为:{1}", user.name, user.age);
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述

九、枚举

9.1 简介

枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明。

C# 枚举是值类型。不能继承或传递继承。

9.2 语句格式

[modify operator]为访问控制符,例如public

[modify operator]enum[EnumName]
{ 
    variable1;
    ...
};

9.3 案例

颜料盘中有红色,绿色,蓝色三种颜料。

请使用枚举表示,并修改控制台输出颜色为红色。

  • 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudyTest01
{
    /// 
    /// 颜料信息枚举
    /// 
    enum ColorPlate
    {
        RED,
        GREEN,
        BLUE
    };
    class Program
    {
        static void Main(string[] args)
        {
            // 声明枚举对象并赋值
            ColorPlate colorPlate;
            colorPlate = ColorPlate.RED; // 选取颜料盘中的红色颜料
            // 判断颜料颜色,修改控制台输出颜色
            switch (colorPlate)
            {
                case ColorPlate.RED:
                    Console.ForegroundColor = ConsoleColor.Red;
                    break;
                case ColorPlate.GREEN:
                    Console.ForegroundColor = ConsoleColor.Green;
                    break;
                case ColorPlate.BLUE:
                    Console.ForegroundColor = ConsoleColor.Blue;
                    break;
                default:
                    Console.WriteLine("错误!");
                    break;
            }
            Console.WriteLine("颜色测试!");
            Console.ReadKey();
        }
    }
}
  • 结果

在这里插入图片描述
注:部分定义参考自菜鸟教程。

你可能感兴趣的:(C#,c#,编程语言)