Bootstrap

C# 第二次作业 0702

1. 变量的作用域有哪些?

局部变量:在方法、属性访问器、构造函数等内部声明的变量。它们的作用域被限制在声明它们的块或整个方法体内。

块级作用域:通常指的是在代码块(如if语句、for循环等)内部声明的变量的作用域。变量的作用域仅限于该代码块。

方法参数作用域:在方法被调用时传递,并在方法体内可用。

全局变量:在类的所有实例之间共享,并且可以通过类名直接访问。

静态变量作用域:可以在不创建类的实例的情况下访问它们,通常需要通过类名来访问它们。

2. 成员变量和静态变量的区别?

存储位置:成员变量属于对象级别,而静态变量属于类级别。

生命周期:成员变量的生命周期与对象相同,静态变量的生命周期与程序或应用程序域相同。

作用域:两者都在类的内部有作用域,但静态变量可以在没有类实例的情况下通过类名来访问。

访问方式:成员变量通过类的实例来访问,静态变量通过类名来访问。

3. 利用递归,写个文件目录遍历,打印出文件名、扩展名、文件大小

TraverseFile类下的代码:

namespace Djproject
{
    // 定义一个内部类TraverseFile,它不能从当前程序之外被访问  
    internal class TraverseFile
    {
        // 定义TraverseDirectory方法,它接受一个字符串参数dir,表示要遍历的目录的路径 
        public void TraverseDirectory(string dir)
        {
            // 打印一条消息,表明当前开始遍历的目录 
            Console.WriteLine($"遍历开始: {dir}");

            // 使用Directory.GetFiles方法获取指定目录下所有文件的路径,并存储在字符串数组files中  
            string[] files = Directory.GetFiles(dir);

            // 遍历files数组中的每个文件路径 
            foreach (string file in files)
            {
                // 使用file路径创建一个FileInfo对象,以便获取有关文件的更多信息
                FileInfo fileInfo = new FileInfo(file);
                // 使用Console.WriteLine打印文件的名称、扩展名和大小 
                Console.WriteLine($"文件名:{fileInfo.Name}, 扩展名:{fileInfo.Extension}, 文件大小:{fileInfo.Length}");
            }

            // 使用Directory.GetDirectories方法获取指定目录下所有子目录的路径,并存储在字符串数组directory中  
            string[] directory = Directory.GetDirectories(dir);

            // 遍历directory数组中的每个子目录路径 
            foreach (string dry in directory)
            {
                // 递归调用TraverseDirectory方法,传入当前子目录的路径作为参数,以便遍历该子目录及其子目录  
                TraverseDirectory(dry);
            }

           
            // 当所有文件和子目录都被遍历后,打印一条消息表明当前目录的遍历已经结束 
            Console.WriteLine($"遍历结束: {dir}");
        }   
    }
}

调用:

//声明了一个TraverseFile类型的变量tD,并通过调用TraverseFile类的构造函数来实例化该变量
TraverseFile tD = new TraverseFile();
//指定了要遍历的目录的路径
tD.TraverseDirectory("D:\\list\\PYTHON\\db");

结果:

4. 简述访问修饰符有几种,各有什么不同?

public:公有访问。不受任何限制,任何其他类或方法都可以访问。

private:私有访问。仅限于同一类或结构中的代码可以访问。

protected:受保护访问。仅限于同一个类或从该类派生的类中的代码可以访问。

 internal:内部访问。同一程序集中的任何代码都可以访问。

protected internal:内部保护访问。访问限于当前程序集或派生自包含类的类型。,

5. 重点比较public、protected、private的区别

访问范围:

public:无限制访问。

protected:限于声明它们的类及其派生类。

private:限于声明它们的类或结构体内部。

用途:

public:用于公开API、库的公共接口。

protected:用于隐藏实现细节,同时允许子类访问。

private:用于完全隐藏实现细节,防止外部访问。

;