获得当前路径的方法:
1 Directory.GetCurrentDirectory();
//注意:====不推荐使用=== 此方法确实能过的文件的路径。但是肯能会被改动。
例: string path = Directory.GetCurrentDirectory();
Console.WriteLine(path);
Console.ReadKey(); //结果:"D:\lianxi\作业\深考与浅考\bin\Debug"
Directory.SetCurrentDirectory(@"R:\");
string path = Directory.GetCurrentDirectory();
Console.WriteLine(path);
Console.ReadKey(); //结果:"R:\" 结果被Directory.SetCurrentDirectory(),改动了,但是这个程序本身并没有移动位置。
2 Assembly.GetExecutingAssembly().Location; //推荐时用
需要引用命名空间:
using System.Runtime.Serialization.Formatters.Binary;
using System.Reflection;
例: string path = Assembly.GetExecutingAssembly().Location;
Console.WriteLine(path);
Console.ReadKey();
用二进制的方法完成深拷贝
例:
MyClass mycla = new MyClass();
mycla.Num = 20;
mycla.C = new MyClass1();
mycla.C.Num = 30;
MyClass mycla3=null;
MemoryStream memory = new MemoryStream(); //使用内存流,比使用FileStream运行要快要方便 而且可以避免损伤硬盘, using (memory)
{
BinaryFormatter bf = new BinaryFormatter(); //添加命名空间using
System.Runtime.Serialization.Formatters.Binary;
bf.Serialize(memory, mycla);
memory.Position = 0;//让“光标”的位置回到开始,由于当二进制序列化完成以后,“光标”位置是在末尾。此“光标”是指当前流中的位置;若是没有让它的位置修改为0,那么就不能将文件反序列化;
mycla3 = (MyClass)bf.Deserialize(memory);
}
[Serializable]
class MyClass
{
public int Num;
public MyClass1 C;
public MyClass Clone()
{
return (MyClass)base.MemberwiseClone();
}
public MyClass DeepClone()
{
MyClass m = (MyClass)base.MemberwiseClone();
m.C = new MyClass1();
m.C.Num = this.C.Num;
return m;
}
}
[Serializable]
class MyClass1
{
public int Num;
}
+++++++++++++++
这是本人的学习笔记,拿来分享一下