您的位置:

C#关键字全面解析

一、数据类型

C#作为一种强类型语言,有着很多数据类型关键字。

1. int

int是C#中最常用的整型数据类型,占用四个字节,可存储-2^31到2^31-1之间的整数。

int num = 456;
Console.WriteLine(num); //输出456

2. float

float是单精度浮点型数据类型,占用四个字节,可存储6到9位小数。

float f = 3.14f;
Console.WriteLine(f); //输出3.14

3. double

double是双精度浮点型数据类型,占用八个字节,可存储15到17位小数。

double d = 3.1415926;
Console.WriteLine(d); //输出3.1415926

4. bool

bool是布尔型数据类型,用于存储True或False的值。

bool isTrue = true;
Console.WriteLine(isTrue); //输出True

5. char

char是字符型数据类型,占用两个字节,用于存储单个字符。

char c = 'A';
Console.WriteLine(c); //输出A

二、流程控制

C#中的流程控制关键字可以帮助我们控制程序的执行流程。

1. if

if用于表示条件语句,如果条件成立则执行相应的语句。

int num = 20;
if(num > 10)
{
    Console.WriteLine("num大于10");
}

2. switch

switch用于表示多重条件语句,根据不同条件执行不同的语句。

int num = 3;
switch(num)
{
    case 1:
        Console.WriteLine("num等于1");
        break;
    case 2:
        Console.WriteLine("num等于2");
        break;
    default:
        Console.WriteLine("num不等于1或2");
        break;
}

3. for

for用于表示循环语句,循环执行指定次数的语句。

for(int i = 0; i < 5; i++)
{
    Console.WriteLine("i的值为:" + i);
}

4. while

while也用于表示循环语句,循环执行直到条件不成立。

int i = 0;
while(i < 5)
{
    Console.WriteLine("i的值为:" + i);
    i++;
}

5. break

break用于跳出循环语句。

for(int i = 0; i < 5; i++)
{
    if(i == 3)
    {
        break;
    }
    Console.WriteLine("i的值为:" + i);
}

三、类和对象

C#是一种面向对象的语言,类和对象是C#的核心之一。

1. class

class用于定义类。

public class Person
{
    public string name;
    public int age;
    
    public void SayHello()
    {
        Console.WriteLine("我叫" + name + ",今年" + age + "岁。");
    }
}

2. object

object是C#中所有类的基类。

Person p = new Person();
object o = p;
Console.WriteLine(o.GetType()); //输出Person

3. new

new用于实例化一个对象。

Person p = new Person();
p.name = "张三";
p.age = 18;
p.SayHello(); //输出“我叫张三,今年18岁。”

4. this

this代表当前对象。

public class Person
{
    public string name;
    public int age;
    
    public void SayHello()
    {
        Console.WriteLine("我叫" + this.name + ",今年" + this.age + "岁。");
    }
}

5. public/private

public和private用于表示访问权限。

public class Person
{
    public string name; //公开属性,外部可访问
    private int age; //私有属性,只有内部可访问
    
    public void SetAge(int age)
    {
        if(age >= 0)
        {
            this.age = age;
        }
    }
    
    public void SayHello()
    {
        Console.WriteLine("我叫" + name + ",今年" + age + "岁。");
    }
}

四、异常处理

异常处理是保证程序安全和稳定的重要手段。

1. try

try用于表示异常尝试语句。

try
{
    int a = 10;
    int b = 0;
    int c = a / b;
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message); //输出“除数不能为零。”
}

2. catch

catch用于捕获异常,指定异常类型。

try
{
    // ...
}
catch(DivideByZeroException ex)
{
    Console.WriteLine("除数不能为零。");
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}

3. finally

finally用于表示异常处理结束后必须执行的语句。

try
{
    // ...
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}
finally
{
    Console.WriteLine("异常处理完毕。");
}

4. throw

throw用于手动抛出异常。

public int Divide(int a, int b)
{
    if(b == 0)
    {
        throw new Exception("除数不能为零。");
    }
    return a / b;
}

5. using

using用于自动释放资源。

using(StreamWriter writer = new StreamWriter("test.txt"))
{
    writer.WriteLine("hello, world");
}

五、多线程

多线程是C#中的一个核心概念。

1. Thread

Thread用于定义和控制线程。

void PrintNumbers()
{
    for(int i = 1; i <= 10; i++)
    {
        Console.WriteLine(i);
        Thread.Sleep(100);
    }
}

Thread t = new Thread(new ThreadStart(PrintNumbers));
t.Start();

2. lock

lock用于多线程同步访问,防止多个线程同时修改同一数据。

class Counter
{
    private int count = 0;
    private object lockObject = new object();
    
    public void Increment()
    {
        lock(lockObject)
        {
            count++;
        }
    }
    
    public void Decrement()
    {
        lock(lockObject)
        {
            count--;
        }
    }
}

3. Monitor

Monitor用于多线程同步访问,与lock类似。

class Counter
{
    private int count = 0;
    
    public void Increment()
    {
        Monitor.Enter(this);
        count++;
        Monitor.Exit(this);
    }
    
    public void Decrement()
    {
        Monitor.Enter(this);
        count--;
        Monitor.Exit(this);
    }
}

4. ThreadPool

ThreadPool用于管理线程池。

void PrintNumbers(object state)
{
    for(int i = 0; i < 10; i++)
    {
        Console.WriteLine(i);
        Thread.Sleep(100);
    }
}

ThreadPool.QueueUserWorkItem(new WaitCallback(PrintNumbers));

5. Async/Await

Async/Await用于异步编程,避免因为长时间的计算或IO操作造成程序阻塞。

async Task
    DownloadFileAsync(Uri address)
{
    using(var client = new WebClient())
    {
        return await client.DownloadStringTaskAsync(address);
    }
}

   

六、其他关键字

1. const

const用于定义一个常量。

const int MaxAmount = 100;

2. sizeof

sizeof用于获取数据类型的大小。

int a = sizeof(int); //a的值为4

3. typeof

typeof用于获取对象的类型。

Person p = new Person();
Type t = typeof(Person);
Console.WriteLine(t.FullName); //输出Person

4. is

is用于判断对象是否是指定类型的实例。

Person p = new Person();
if(p is Person)
{
    Console.WriteLine("p是Person的实例。");
}

5. var

var用于自动推断变量类型。

var num = 123; //num的类型为int