MST
星途 面试题库

面试题:C#中不安全代码块的使用场景及基础指针操作

请描述在C#中使用不安全代码块(unsafe block)的场景。并且编写一段简单的C#代码,在不安全代码块中使用指针来获取一个整数数组的第一个元素的值,并打印出来。
33.3万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试
  1. 使用不安全代码块(unsafe block)的场景
    • 当需要进行直接内存操作时,例如处理指针、访问非托管资源。这在性能敏感的场景,如编写底层图形库、高性能计算库等可能会用到。
    • 与旧的C或C++代码进行交互,需要遵循其内存管理和指针操作方式时。
  2. C#代码示例
class Program
{
    static void Main()
    {
        int[] numbers = { 10, 20, 30 };
        unsafe
        {
            fixed (int* ptr = numbers)
            {
                Console.WriteLine(*ptr);
            }
        }
    }
}

在上述代码中:

  • 首先定义了一个整数数组numbers
  • 然后使用unsafe关键字开启不安全代码块。
  • 在不安全代码块中,使用fixed关键字将托管数组numbers固定在内存中,并获取其指针ptr。这样就可以通过指针ptr来访问数组的第一个元素,通过解引用*ptr并打印出来。