c#查漏补缺

一、构造对象的时候直接给非方法成员赋值。

C#支持在构类对象的时候对类的非方法成员进行初始化。如果省略这个过程,则所有的非方法成员初始化为缺省值,当然还可以直接在类中给类的成员赋值。例如
public int i = 2;
以上做法在C#中是允许的。它的做法虽然和构造对象时初始化效果一致,但是作用范围更广。因为在构造对象时初始化只针对当前的对象,而在类中初始化则对所有即将构造的对象都起作用。
    class Test
    {
        public int data;
        private string _str;
        public string str
        {
            set { _str = value; }
            get { return _str; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Test obj = new Test() { data = 100, str = "Congratulations! You've gained {0} scores" };
            System.Console.WriteLine(obj.str, obj.data);
        }
    }

二、通过索引器构造二维数组

C#的索引器类似于C++中对索引运算符的重载。
    class Test
    {
        private int[][] arr = new int[2][];
        public int[] this[int index]
        {
            set { arr[index] = value; }
            get { return arr[index]; }
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Test obj = new Test();
            obj[0] = new int[2] { 1, 2 };
            obj[1] = new int[] { 3, 4, 5, 6};

            System.Console.WriteLine("{0}, {1}", obj[0][0], obj[0][1]);
            System.Console.WriteLine("{0}, {1}, {2}, {3}", 
                obj[1][0], obj[1][1], obj[1][2], obj[1][3]);
        }
    }

三、通过FileStream和StreamReader实现对文件的逐行读取

在Python中文件的逐行读取十分简单,打开文件之后,通过readline函数就可以实现。在C#中需要先定义文件流,然后将该流赋值给一个流的读取器。然后再调用读取器的逐行读取函数来实现。
                    FileStream file = new FileStream(iniFilePath, FileMode.Open, FileAccess.Read);
                    StreamReader reader = new StreamReader(file);

                    while (!reader.EndOfStream)
                    {
                        string str = reader.ReadLine();
			// todo with line
                    }

四、通过FileStream和StreamWriter实现字符串写入

类似于文件的逐行读取
                FileStream fs = new FileStream(iniFilePath, FileMode.Create, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs);

                sw.Write(str);//str为字符串,'\0'结束

五、路径相关的类Path

获取绝对路径:Path.GetFullPath
获取路径中的文件名(包括后缀):Path.GetFileName
获取路径中目录:Path.GetDirectoryName
这三个方法比较有用,应该着重标注。

六、文件夹/文件是否存在

File.Exist/Directory.Exist

七、文件遍历,目录遍历

DirectoryInfo/FileInfo类中的GetDirectories/GetFiles可以实现
或者调用静态方法Directory.GetDirectories(获取所有的完整目录名),DirectoryGetFiles(获取所有文件的完整文件名)
八、文件删除
删除文件:静态方法File.Delete,类方法FileInfo.Delete
删除目录:静态方法Directory.Delete,类方法DirectoryInfo.Delete(可以给Delete方法传递bool参数表明是否删除子文件夹和文件)

你可能感兴趣的:(c#)