C# 基础入门

C# 作为微软开发的现代面向对象编程语言,在桌面应用、游戏开发、Web 服务等领域有着广泛应用。本文将系统梳理 C# 的基础知识,涵盖数据类型、数据转换、条件语句、循环语句、控制台输入输出,以及变量常量、运算符、字符串操作、数组和跳转语句等内容,通过丰富实例帮助读者全面掌握。

一、数据类型

数据类型决定了变量可存储的数据种类和范围,主要分为值类型和引用类型。

1. 整数类型

用于存储无小数部分的数字,不同类型有不同的占用空间和范围:

类型占用空间范围示例
sbyte1 字节-128 到 127sbyte num1 = 100;
short2 字节-32768 到 32767short num2 = 20000;
int4 字节-2147483648 到 2147483647int num3 = 100000;(最常用)
long8 字节-9223372036854775808 到 9223372036854775807long num4 = 10000000000L;(需加 L 后缀)
byte1 字节0 到 255byte num5 = 200;
ushort2 字节0 到 65535ushort num6 = 50000;
uint4 字节0 到 4294967295uint num7 = 3000000000U;(需加 U 后缀)
ulong8 字节0 到 18446744073709551615ulong num8 = 15000000000UL;(需加 UL 后缀)

2. 浮点类型

用于存储带小数部分的数字:

  • float:4 字节,精度约 6-7 位小数,赋值时需加fF后缀
    示例:float pi1 = 3.14159f;
  • double:8 字节,精度约 15-17 位小数(默认浮点类型)
    示例:double pi2 = 3.1415926535;
  • decimal:16 字节,高精度(28-29 位小数),适合财务计算,需加mM后缀
    示例:decimal money = 99.99m;

3. 字符与布尔类型

  • char:2 字节,用于存储单个字符,需用单引号包裹
    示例:char gender = '男'; char letter = 'A';
  • bool:1 字节,仅能存储true(真)或false(假)
    示例:bool isPass = true; bool hasError = false;

4. 字符串类型(引用类型)

string用于存储文本,用双引号包裹,是最常用的引用类型:

string name = "张三";
string message = "Hello, C#!";

二、变量与常量

1. 变量的声明与初始化

变量是存储数据的容器,声明时必须指定类型,初始化即第一次赋值:

// 声明后初始化
int score;
score = 90;

// 声明时直接初始化
string username = "Alice";
double height = 1.75;

2. 常量(const)

值在程序运行中不可修改的量,声明时必须初始化:

const double PI = 3.14159; // 数学常量π
const int MAX_AGE = 120;   // 假设的最大年龄限制

// 错误示例:常量不能被重新赋值
// PI = 3.14; 

三、运算符

C# 提供了多种运算符,用于处理数据和变量:

1. 算术运算符

int a = 10, b = 3;
Console.WriteLine(a + b); // 加:13
Console.WriteLine(a - b); // 减:7
Console.WriteLine(a * b); // 乘:30
Console.WriteLine(a / b); // 除(整数除法取整):3
Console.WriteLine(a % b); // 取余:1

2. 赋值运算符

int x = 5;
x += 3; // 等价于 x = x + 3 → x=8
x -= 2; // 等价于 x = x - 2 → x=6
x *= 4; // 等价于 x = x * 4 → x=24
x /= 6; // 等价于 x = x / 6 → x=4

3. 比较运算符(返回 bool 值)

int m = 5, n = 10;
Console.WriteLine(m == n); // 等于:false
Console.WriteLine(m != n); // 不等于:true
Console.WriteLine(m > n);  // 大于:false
Console.WriteLine(m <= n); // 小于等于:true

4. 逻辑运算符(用于连接 bool 表达式)

bool isSunny = true;
bool isWarm = false;

// 与(&&):两边都为true才返回true
Console.WriteLine(isSunny && isWarm); // false

// 或(||):至少一边为true就返回true
Console.WriteLine(isSunny || isWarm); // true

// 非(!):取反
Console.WriteLine(!isSunny); // false

四、数据转换

将一种数据类型转换为另一种类型,分为隐式转换(自动完成,无数据丢失风险)和显式转换(强制转换,可能丢失数据)。

1. 隐式转换

当目标类型的范围大于源类型时,可自动转换:

int a = 100;
long b = a; // int 转 long(范围更大),隐式转换

float c = 3.14f;
double d = c; // float 转 double,隐式转换

2. 显式转换(强制转换)

当目标类型范围小于源类型时,需用(目标类型)强制转换:

double e = 123.45;
int f = (int)e; // 结果为123(小数部分被截断)

long g = 20000000000;
int h = (int)g; // 若超出int范围,结果会出错(需注意)

3. 常用转换方法

  • Convert 类:提供更安全的转换,支持多种类型

    string str = "123";
    int num = Convert.ToInt32(str); // 字符串转int
    double num2 = Convert.ToDouble("45.67"); // 字符串转double
    
  • Parse 方法:针对字符串转数值类型

    int num3 = int.Parse("789");
    float num4 = float.Parse("3.14");
    

五、字符串操作

字符串(string)是常用类型,有许多实用操作:

1. 字符串拼接

string first = "Hello";
string last = "World";
string full1 = first + " " + last; // 用+拼接 → "Hello World"
string full2 = $"{first} {last}"; // 字符串插值(更推荐)→ "Hello World"

2. 常用字符串方法

string text = "  C# Programming  ";

// 移除首尾空格
string trimmed = text.Trim(); // "C# Programming"

// 转换大小写
string lower = text.ToLower(); // "  c# programming  "
string upper = text.ToUpper(); // "  C# PROGRAMMING  "

// 检查是否包含子串
bool hasCSharp = text.Contains("C#"); // true

// 替换内容
string replaced = text.Replace("C#", "C Sharp"); // "  C Sharp Programming  "

六、条件语句

条件语句用于根据不同条件执行不同的代码块,常用的有if语句和switch语句。

1. if 语句

  • 基本结构if (条件) { 代码块 }
    示例:判断一个数是否为正数

    int num = 5;
    if (num > 0)
    {
        Console.WriteLine("这是正数");
    }
    
  • if-else 结构:满足条件执行 if 块,否则执行 else 块
    示例:判断奇偶数

    int num = 7;
    if (num % 2 == 0)
    {
        Console.WriteLine("偶数");
    }
    else
    {
        Console.WriteLine("奇数");
    }
    
  • if-else if-else 结构:多条件判断
    示例:判断成绩等级

    int score = 85;
    if (score >= 90)
    {
        Console.WriteLine("优秀");
    }
    else if (score >= 80)
    {
        Console.WriteLine("良好");
    }
    else if (score >= 60)
    {
        Console.WriteLine("及格");
    }
    else
    {
        Console.WriteLine("不及格");
    }
    

2. switch 语句

用于判断一个变量与多个值的匹配情况,适合条件清晰的场景:

int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("星期一");
        break; // 跳出switch
    case 2:
        Console.WriteLine("星期二");
        break;
    case 3:
        Console.WriteLine("星期三");
        break;
    default: // 所有case不匹配时执行
        Console.WriteLine("其他星期");
        break;
}

注意:每个case后需加break,否则会继续执行下一个case

七、循环语句

循环语句用于重复执行一段代码,常用的有forwhiledo-while

1. for 循环

适合已知循环次数的场景,结构:for (初始值; 循环条件; 增量)

示例 1:输出 1 到 5 的数字

for (int i = 1; i <= 5; i++)
{
    Console.WriteLine(i);
}
// 输出:1 2 3 4 5

示例 2:计算 1 到 100 的和

int sum = 0;
for (int i = 1; i <= 100; i++)
{
    sum += i; // 等价于 sum = sum + i
}
Console.WriteLine("1到100的和为:" + sum); // 结果为5050

2. while 循环

适合未知循环次数,但已知循环条件的场景,结构:while (循环条件) { 代码块 }

示例:计算 1 到多少的和小于 1000

int sum = 0;
int num = 1;
while (sum + num <= 1000)
{
    sum += num;
    num++;
}
Console.WriteLine("最大的数是:" + (num - 1)); // 结果为44

3. do-while 循环

while类似,但至少执行一次代码块,结构:do { 代码块 } while (循环条件);

示例:让用户输入数字,直到输入 0 为止

int input;
do
{
    Console.WriteLine("请输入一个数字(输入0退出):");
    input = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("你输入的是:" + input);
} while (input != 0);

八、数组

数组用于存储多个相同类型的数据,长度固定:

1. 数组的声明与初始化

// 声明并指定长度(初始值为默认值,如int默认0)
int[] numbers = new int[5];
numbers[0] = 10; // 给第一个元素赋值
numbers[1] = 20;

// 声明时直接初始化
string[] fruits = { "苹果", "香蕉", "橙子" };
int[] scores = new int[] { 85, 90, 78 };

2. 访问数组元素(通过索引,从 0 开始)

string[] colors = { "红", "绿", "蓝" };
Console.WriteLine(colors[0]); // 输出第一个元素:红
Console.WriteLine(colors.Length); // 输出数组长度:3

3. 遍历数组(结合循环)

int[] nums = { 1, 2, 3, 4, 5 };
// for循环遍历
for (int i = 0; i < nums.Length; i++)
{
    Console.WriteLine(nums[i]);
}

// foreach循环遍历(更简洁,适合只读访问)
foreach (int num in nums)
{
    Console.WriteLine(num);
}

九、跳转语句

用于改变程序执行流程:

1. break

  • 在循环中:跳出当前循环
  • 在 switch 中:跳出 switch 语句
// 循环中使用break
for (int i = 1; i <= 10; i++)
{
    if (i == 5)
    {
        break; // 当i=5时跳出循环
    }
    Console.WriteLine(i); // 输出1-4
}

2. continue

跳过当前循环的剩余部分,直接进入下一次循环:

// 输出1-10中的奇数
for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0)
    {
        continue; // 偶数时跳过后续代码
    }
    Console.WriteLine(i); // 输出1,3,5,7,9
}

3. return

用于结束当前方法(虽然暂未介绍方法,但可简单理解为 “退出程序”):

Console.WriteLine("开始");
return; // 程序执行到这里会直接结束
Console.WriteLine("结束"); // 这行代码不会执行

十、控制台输入输出

控制台是 C# 程序与用户交互的基础方式,常用以下方法:

1. 输出:Console.WriteLine ()

  • 输出内容并自动换行
    Console.WriteLine("Hello World!"); // 输出文本
    int age = 20;
    Console.WriteLine("年龄:" + age); // 拼接变量
    Console.WriteLine($"年龄:{age}"); // 字符串插值(更简洁)
    

2. 输入:Console.ReadLine ()

  • 读取用户输入的文本,返回值为string类型,如需数值需转换
    Console.WriteLine("请输入姓名:");
    string name = Console.ReadLine(); // 读取文本
    
    Console.WriteLine("请输入年龄:");
    int age = Convert.ToInt32(Console.ReadLine()); // 读取并转换为整数
    
    Console.WriteLine($"你好,{name},今年{age}岁");
    

总结

本文全面介绍了 C# 的基础知识,包括数据类型、变量与常量、运算符、数据转换、字符串操作、条件语句、循环语句、数组、跳转语句以及控制台操作。这些内容相互配合,是构建 C# 程序的基础 “积木”。掌握这些知识后,读者可以编写具有一定逻辑复杂度的程序,为后续学习函数、类、对象等面向对象概念打下坚实基础。通过大量练习实例,能更快熟练运用这些基础知识点,提升 C# 编程能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿只小灿灿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值