??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美xxxx在线观看,国产欧美一区二区精品婷婷,精品一区二区三区中文字幕在线http://www.aygfsteel.com/Yipak/category/34179.html成功在于你是否努?希望在于你是否相信自? zh-cnFri, 05 Sep 2008 17:06:35 GMTFri, 05 Sep 2008 17:06:35 GMT60C#深入详解[4.1 数据cd]http://www.aygfsteel.com/Yipak/articles/227335.htmlȝȝFri, 05 Sep 2008 14:26:00 GMThttp://www.aygfsteel.com/Yipak/articles/227335.htmlhttp://www.aygfsteel.com/Yipak/comments/227335.htmlhttp://www.aygfsteel.com/Yipak/articles/227335.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/227335.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/227335.html阅读全文

ȝ 2008-09-05 22:26 发表评论
]]>
c# 文g操作http://www.aygfsteel.com/Yipak/articles/226932.htmlȝȝThu, 04 Sep 2008 06:24:00 GMThttp://www.aygfsteel.com/Yipak/articles/226932.htmlhttp://www.aygfsteel.com/Yipak/comments/226932.htmlhttp://www.aygfsteel.com/Yipak/articles/226932.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/226932.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/226932.htmlC#q加文g
StreamWriter sw = File.AppendText(Server.MapPath(??+?a href="file://myText.txt/">\\myText.txt?;
sw.WriteLine(”追逐理想?;
sw.WriteLine(”kzlll?;
sw.WriteLine(?NETW记?;
sw.Flush();
sw.Close();

C#拯文g
string OrignFile,NewFile;
OrignFile = Server.MapPath(??+?a href="file://myText.txt/">\\myText.txt?
NewFile = Server.MapPath(??+?a href="file://myTextCopy.txt/">\\myTextCopy.txt?
File.Copy(OrignFile,NewFile,true);

C#删除文g
string delFile = Server.MapPath(??+?a href="file://myTextCopy.txt/">\\myTextCopy.txt?
File.Delete(delFile);

C#Ud文g
string OrignFile,NewFile;
OrignFile = Server.MapPath(??+?a href="file://myText.txt/">\\myText.txt?
NewFile = Server.MapPath(??+?a href="file://myTextCopy.txt/">\\myTextCopy.txt?
File.Move(OrignFile,NewFile);

C#创徏目录
// 创徏目录c:\sixAge
DirectoryInfo d=Directory.CreateDirectory(”c:\\sixAge?;
// d1指向c:\sixAge\sixAge1
DirectoryInfo d1=d.CreateSubdirectory(”sixAge1?;
// d2指向c:\sixAge\sixAge1\sixAge1_1
DirectoryInfo d2=d1.CreateSubdirectory(”sixAge1_1?;
// 当前目录设为c:\sixAge
Directory.SetCurrentDirectory(”c:\\sixAge?;
// 创徏目录c:\sixAge\sixAge2
Directory.CreateDirectory(”sixAge2?;
// 创徏目录c:\sixAge\sixAge2\sixAge2_1
Directory.CreateDirectory(”sixAge2\\sixAge2_1?;

递归删除文g夹及文g
<%@ Page Language=C#%>
<%@ Import namespace=”System.IO?>
<Script runat=server>
public void DeleteFolder(string dir)
{
    if (Directory.Exists(dir)) //如果存在q个文g夹删除之
    {
        foreach(string d in Directory.GetFileSystemEntries(dir))
        {
            if(File.Exists(d))
                File.Delete(d); //直接删除其中的文?br />            else
                DeleteFolder(d); //递归删除子文件夹
        }
        Directory.Delete(dir); //删除已空文g?br />        Response.Write(dir+?文g夹删除成功?;
    }
    else
        Response.Write(dir+?该文件夹不存在?; //如果文g夹不存在则提C?br />}

protected void Page_Load (Object sender ,EventArgs e)
{
    string Dir=”D:\\gbook\\11?
    DeleteFolder(Dir); //调用函数删除文g?br />}


// ======================================================
  // 实现一个静态方法将指定文g夹下面的所有内容copy到目标文件夹下面
  // 如果目标文g夹ؓ只读属性就会报错?br />  // April 18April2005 In STU
  // ======================================================
  public static void CopyDir(string srcPath,string aimPath)
  {
   try
   {
    // 查目标目录是否以目录分割字符l束如果不是则添加之
    if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)
     aimPath += Path.DirectorySeparatorChar;
    // 判断目标目录是否存在如果不存在则新徏?br />    if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);
    // 得到源目录的文g列表Q该里面是包含文件以及目录\径的一个数l?br />    // 如果你指向copy目标文g下面的文件而不包含目录请用下面的Ҏ
    // string[] fileList = Directory.GetFiles(srcPath);
    string[] fileList = Directory.GetFileSystemEntries(srcPath);
    // 遍历所有的文g和目?br />    foreach(string file in fileList)
    {
     // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文g
     if(Directory.Exists(file))
      CopyDir(file,aimPath+Path.GetFileName(file));
      // 否则直接Copy文g
     else
      File.Copy(file,aimPath+Path.GetFileName(file),true);
    }
   }
   catch (Exception e)
   {
    MessageBox.Show (e.ToString());
   }
  }

  // ======================================================
  // 实现一个静态方法将指定文g夹下面的所有内容Detele
  // 试的时候要心操作Q删除之后无法恢复?br />  // April 18April2005 In STU
  // ======================================================
  public static void DeleteDir(string aimPath)
  {
   try
   {
    // 查目标目录是否以目录分割字符l束如果不是则添加之
    if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)
     aimPath += Path.DirectorySeparatorChar;
    // 得到源目录的文g列表Q该里面是包含文件以及目录\径的一个数l?br />    // 如果你指向Delete目标文g下面的文件而不包含目录请用下面的Ҏ
    // string[] fileList = Directory.GetFiles(aimPath);
    string[] fileList = Directory.GetFileSystemEntries(aimPath);
    // 遍历所有的文g和目?br />    foreach(string file in fileList)
    {
     // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文g
     if(Directory.Exists(file))
     {
      DeleteDir(aimPath+Path.GetFileName(file));
     }
      // 否则直接Delete文g
     else
     {
      File.Delete (aimPath+Path.GetFileName(file));
     }
    }
    //删除文g?br />    System.IO .Directory .Delete (aimPath,true);
   }
   catch (Exception e)
   {
    MessageBox.Show (e.ToString());
   }
  }
 

 

需要引用命名空_
using System.IO;

/**//// <summary>
  /// 拯文g?包括子文件夹)到指定文件夹?源文件夹和目标文件夹均需l对路径. 格式: CopyFolder(源文件夹,目标文g?;
  /// </summary>
  /// <param name=”strFromPath?gt;</param>
  /// <param name=”strToPath?gt;</param>

  //————————————————?br />  //作?明天去要饭?QQ:305725744
 //————————————————?/p>

  public static void CopyFolder(string strFromPath,string strToPath)
  {
   //如果源文件夹不存在,则创?br />   if (!Directory.Exists(strFromPath))
   {   
    Directory.CreateDirectory(strFromPath);
   }  

   //取得要拷贝的文g夹名
   string strFolderName = strFromPath.Substring(strFromPath.LastIndexOf(”\\? + 1,strFromPath.Length - strFromPath.LastIndexOf(”\\? - 1);  

   //如果目标文g夹中没有源文件夹则在目标文g夹中创徏源文件夹
   if (!Directory.Exists(strToPath + “\\?+ strFolderName))
   {   
    Directory.CreateDirectory(strToPath + “\\?+ strFolderName);
   }
   //创徏数组保存源文件夹下的文g?br />   string[] strFiles = Directory.GetFiles(strFromPath);

   //循环拯文g
   for(int i = 0;i < strFiles.Length;i++)
   {
    //取得拯的文件名Q只取文件名Q地址截掉?br />    string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf(”\\? + 1,strFiles[i].Length - strFiles[i].LastIndexOf(”\\? - 1);
    //开始拷贝文?true表示覆盖同名文g
    File.Copy(strFiles[i],strToPath + “\\?+ strFolderName + “\\?+ strFileName,true);
   }
 
   //创徏DirectoryInfo实例
   DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);
   //取得源文件夹下的所有子文g夹名U?br />   DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
   for (int j = 0;j < ZiPath.Length;j++)
   {
    //获取所有子文g夹名
    string strZiPath = strFromPath + “\\?+ ZiPath[j].ToString();  
    //把得到的子文件夹当成新的源文件夹Q从头开始新一轮的拯
    CopyFolder(strZiPath,strToPath + “\\?+ strFolderName);
   }
  }



ȝ 2008-09-04 14:24 发表评论
]]>
AJAX for asp.net 插g安装及测?/title><link>http://www.aygfsteel.com/Yipak/articles/Ajax.html</link><dc:creator>ȝ</dc:creator><author>ȝ</author><pubDate>Thu, 04 Sep 2008 06:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/Ajax.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/226929.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/Ajax.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/226929.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/226929.html</trackback:ping><description><![CDATA[ <p>AJAX是Asnychronize Javascript and XMLQ异步Javascript和XMLQ。其基本原理是当用户触发了网中的事件时Q网中Javascript代码Q理ZVBScript也能完成{效操作Q先截获事gQ然后在后台利用XmlHttp对象对网进行提交。在q回的结果中提取需要部分来更新|页。这样免M加蝲q没有变化的控g的时_减少用户{待旉。而且利用AJAXq能L完成传统技术不能或者很隑֮成的ҎQ比如说拖拉操作?br /><br />虽然AJAX只是把现有技术进行重新组合,但是与传l编E有很大的区别。初学者学h可能会感觉不习惯Q尤其是目前q没有好的教材。好在微软ASPC֌发布了能整合在Visual Studio 2005里的AJAX Extender和AJAX Control Toolkit。前者提供了AJAX技术的核心功能Q也是异步提交Q而后者是控g集,内含32个AJAX控g。我先向大家介绍如何安装AJAX Extensionr和AJAX Control Toolkit?br /><br />首先需要安?NET Framework 2.0和Visual Studio 2005?br /><br />微YASPC֌AJAX下蝲中心Q?a target="_blank">http://ajax.asp.net/downloads/default.aspx?tabid=47</a><br /><br />1为Ajax Extender的下载链接,只可惜需要Windows正版验证?br /><br />2为AJAX Control Toolkit的下载链接,点击后会指向另外一个网,|页中部有两个下载链接一个是2.2MB的完整版Q一个是1.5MB的无源代码版。徏议下载完全版?br /><br />3为Ajax Control Toolkit的演C页面?br />Ajax Extension是MSI安装E序Q按照提C即可。安装完成以后会在VS里的控g工具栏里发现"Ajax Extensions"的组。里面有五个控gQ具体功能以后介l。现在就可以~译AJAXE序了。但是要q行~程Q还需要下面的步骤?br /><br />Ajax Control Toolkit只能手动安装。首先将文g解压Q由于其中包括实例程序,所以徏议解压到方便览的位|。然后双d目录AjaxControlExtender里的AjaxControlExtender.vsi?br /><br />如果安装了VSpq行Q按照提C即可。其中会提示文g可能会含有有害的代码Q不用理会。接着打开VSQ在控g工具栏里新徏一个组Q命名ؓ"Ajax Control Toolkit"<br /><br />在新l里点击右键Q?选择目"Q在弹出对话框里点“浏览”,选择解压出来的文件当中SampleWebsite\Bin子目录中的AjaxControlToolkit.dll文g然后定退出,如图6。这样一来新l里多?2个新控g了?br /></p> <img src ="http://www.aygfsteel.com/Yipak/aggbug/226929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">ȝ</a> 2008-09-04 14:23 <a href="http://www.aygfsteel.com/Yipak/articles/Ajax.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#H口E序启动Q能不出现命令行H口http://www.aygfsteel.com/Yipak/articles/226930.htmlȝȝThu, 04 Sep 2008 06:23:00 GMThttp://www.aygfsteel.com/Yipak/articles/226930.htmlhttp://www.aygfsteel.com/Yipak/comments/226930.htmlhttp://www.aygfsteel.com/Yipak/articles/226930.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/226930.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/226930.html如果说在VS里面~译,修改一下配|? 
   
  目   ->   目属?  ->   常规   ->   输出cd   =   Windows   应用E序  
   
  如果说在控制? 
   
  C:\>csc.exe   /t:winexe   /r:System.Windows.Forms.dll   yourClassName.cs



ȝ 2008-09-04 14:23 发表评论
]]>
C#动态调用C++~写的DLL函数http://www.aygfsteel.com/Yipak/articles/226313.htmlȝȝTue, 02 Sep 2008 03:56:00 GMThttp://www.aygfsteel.com/Yipak/articles/226313.htmlhttp://www.aygfsteel.com/Yipak/comments/226313.htmlhttp://www.aygfsteel.com/Yipak/articles/226313.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/226313.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/226313.html 动态加?/span> DLL 需要?/span> Windows API 函数Q?/span> LoadLibrary ?/span> GetProcAddress 以及 FreeLibrary 。我们可以?/span> DllImport ?/span> C# 中用这三个函数?/span>
 
[DllImport("Kernel32")]
public static extern int GetProcAddress(inthandle, Stringfuncname);
 
[DllImport("Kernel32")]
public static extern int LoadLibrary(Stringfuncname);
 
[DllImport("Kernel32")]
public static extern int FreeLibrary(inthandle);
 
当我们在 C++ 中动态调?/span> Dll 中的函数Ӟ我们一般的Ҏ是:
假设 DLL 中有一个导出函敎ͼ函数原型如下Q?/span>
BOOL __stdcall foo(Object &object, LPVOID lpReserved);
 
1 、首先定义相应的函数指针Q?/span>
typedef BOOL (__stdcall *PFOO)(Object &object, LPVOID lpReserved);
 
2 、调?/span> LoadLibrary 加蝲 dll Q?/span>
HINSTANCE hInst = ::LoadLibraryW(dllFileName);
 
3 、调?/span> GetProcAddress 函数获取要调用函数的地址Q?/span>
PFOO foo = (PFOO)GetProcAddress(hInst,"foo");
if (foo == NULL)
{
    FreeLibrary(hInst);
    return false;
}
 
4 、调?/span> foo 函数Q?/span>
BOOL bRet = foo(object,(LPVOID)NULL);
 
5 、用完后应释放 DLL Q?/span>
FreeLibrary(hInst);
 
那么?/span> C# 中应该怎么做呢Q方法基本上一P我们使用委托来代?/span> C++ 的函数指针,通过 .NET Framework 2.0 新增的函?/span> GetDelegateForFunctionPointer 来得C个委托的实例Q?/span>
 
下面装了一个类Q通过该类我们可以在 C# 中动态调?/span> Dll 中的函数了:
 
public class DLLWrapper
{
    ///<summary>
    /// API LoadLibrary
    ///</summary>
    [DllImport("Kernel32")]
    publicstaticexternintLoadLibrary(Stringfuncname);
 
    ///<summary>
    /// API GetProcAddress
    ///</summary>
    [DllImport("Kernel32")]
    publicstaticexternintGetProcAddress(inthandle, Stringfuncname);
 
    ///<summary>
    /// API FreeLibrary
    ///</summary>
    [DllImport("Kernel32")]
    publicstaticexternintFreeLibrary(inthandle);
 
    ///<summary>
    /// 通过非托函数名转换为对应的委托 , by jingzhongrong
    ///</summary>
    ///<param name="dllModule"> 通过 LoadLibrary 获得?/span> DLL 句柄 </param>
    ///<param name="functionName"> 非托函数名 </param>
    ///<param name="t"> 对应的委托类?/span> </param>
    ///<returns> 委托实例Q可强制转换为适当的委托类?/span> </returns>
    publicstaticDelegateGetFunctionAddress(intdllModule, stringfunctionName, Typet)
    {
       intaddress = GetProcAddress(dllModule, functionName);
       if (address == 0)
           returnnull;
       else
           returnMarshal.GetDelegateForFunctionPointer(newIntPtr(address), t);
    }
 
    ///<summary>
    /// 表C函数地址?/span> IntPtr 实例转换成对应的委托 , by jingzhongrong
    ///</summary>
    publicstaticDelegateGetDelegateFromIntPtr(IntPtraddress, Typet)
    {
       if (address == IntPtr.Zero)
           returnnull;
       else
           returnMarshal.GetDelegateForFunctionPointer(address, t);
    }
 
    ///<summary>
    /// 表C函数地址?/span> int 转换成对应的委托Qby jingzhongrong
    ///</summary>
    publicstaticDelegateGetDelegateFromIntPtr(intaddress, Typet)
    {
       if (address == 0)
           returnnull;
       else
           returnMarshal.GetDelegateForFunctionPointer(newIntPtr(address), t);
    }
}
 
通过q个c,我们q样调用 DLL Q?/span>
 
1 、声明相应的委托Q正声明很重要Q否则不能调用成功,后面有详l介l)?/span>
 
2 、加?/span> DLL Q?/span>
int hModule = DLLWrapper.LoadLibrary(dllFilePath);
if (hModule == 0)
    returnfalse;
 
3 、获取相应的委托实例Q?/span>
FOO foo = (FOO)DLLWrapper.GetFunctionAddress(hModule, "foo", typeof(FOO));
if (foo == null)
{
    DLLWrapper.FreeLibrary(hModule);
    returnfalse;
}
 
4 、调用函敎ͼ
foo(...);
 
5 ?/span> .NET q不能自动释攑֊态加载的 DLL Q因此我们在使用?/span> DLL 后应该自己释?/span> DLL Q?/span>
DLLWrapper .FreeLibrary(hModule);
 
下面我们就委托应如何声明进行相应的讨论Q在实际操作q程中,我发C?/span> DllImport Ҏ和动态调用方法两者在 C# 中对 DLL 中函数原型的声明是有些区别的Q下面我介绍动态调用中委托的声明:
 
1 、首先应该注意的是, C++ 中的cd?/span> C# 中类型的对应关系Q比?/span> C++ 中的 long 应该对应 C# 中的 Int32 而不?/span> long Q否则将D调用l果出错?/span>
 
2 、结构的声明使用 StructLayout对结构的相应布局q行讄Q具体的h?/span> MSDNQ?/span>
 
使用 LayoutKind 指定l构中成员的布局序Q一般可以?/span> Sequential Q?/span>
    [StructLayout(LayoutKind.Sequential)]
    structStructVersionInfo
    {
       publicintMajorVersion;
       publicintMinorVersion;
    }
另外Q如果单独用内部类型没有另外用到字符丌Ӏ结构、类Q可以将l构?/span> C# 中声明ؓ class Q?/span>
    [StructLayout(LayoutKind.Sequential)]
    classStructVersionInfo
    {
       publicintMajorVersion;
       publicintMinorVersion;
    }
 
对应 C++ 中的声明Q?/span>
    typedef struct _VERSION_INFO
    {
        intMajorVersion;
        intMinorVersion;
    } VERSION_INFO, *PVERSION_INFO;
 
如果l构中用到了字W串Q最好应指定相应的字W集Q?/span>
    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
 
部分常用的声明对应关p(在结构中Q:
C++ Q字W串数组
    wchar_t Comments[120];
C# Q?/span>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
    publicstringComments;
 
C++ Q结构成?/span>
    VERSION_INFO ver;
C#
    public StructVersionInfo ver;
 
C++ Q函数指针声?/span>
    PFOO pFoo; // 具体声明见文章前面部?/span>
C#:
    public IntPtr pFoo;  // 也可以ؓ public int pFoo;
        // 不同的声明方法可以用上?/span> DLLWrapper cȝ相应函数获取对应的委托实?/span>
 
如果在结构中使用C union Q那么可以?/span> FieldOffset 指定具体位置?/span>
 
3 、委托的声明Q?/span>
 
?/span> C++ ~写?/span> DLL 函数需要通过指针传出一个结构:如以下声明:
    void getVersionInfo( VERSION_INFO *ver);
对于?/span> C# 中声明ؓ class 的结构(?/span> VERSION_INFO 声明?/span> class Q?/span>
    delegate void getVersionInfo ( VERSION_INFO ver);
如果l构声明?/span> struct Q那么应该用如下声明:
    delegate void getVersionInfo ( ref VERSION_INFO ver);
注意Q应该?/span> ref 关键字?/span>
 
 
如果 DLL 函数需要传入一个字W串Q比如这P
    BOOL __stdcall jingzhongrong1(constwchar_t* lpFileName, int* FileNum);
那么使用委托来调用函数的时候应该在 C# 中如下声明委托:
    delegatebooljingzhongrong1(
       [MarshalAs(UnmanagedType.LPWStr)]StringFileName,
       refintFileNum);
注意Q应该?/span> [MarshalAs(UnmanagedType.LPWStr)] ?/span> String q行声明?/span>
 
 
如果要在 DLL 函数中传Z个字W串Q比如这P
    void __stdcall jingzhongrong2(
    wchar_t* lpFileName, // 要传出的字符?/span>
    intLength);
那么我们如下声明委托Q?/span>
    // 使用委托从非托管函数的参C传出的字W串Q?/span>
    // 应该q样声明Qƈ在调用前?/span> StringBuilder 预备_的空?/span>
    delegatevoidjingzhongrong2(
       [MarshalAs(UnmanagedType.LPWStr)] StringBuilderlpFileName,
       refintLength,
    );
在用函数前Q应先ؓ StringBuilder 声明_的空间用于存攑֭W串Q?/span>
    StringBuilder fileName = newStringBuilder(FileNameLength);


ȝ 2008-09-02 11:56 发表评论
]]>
C#中HashTable的用?/title><link>http://www.aygfsteel.com/Yipak/articles/CSharp.html</link><dc:creator>ȝ</dc:creator><author>ȝ</author><pubDate>Thu, 28 Aug 2008 09:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/CSharp.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/225353.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/CSharp.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/225353.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/225353.html</trackback:ping><description><![CDATA[ <div id="wmqeeuq" class="postText"> <p> <font size="2">一,哈希?Hashtable)q?/font> </p> <p> <font size="2">  ?NET Framework中,Hashtable是System.Collections命名I间提供的一个容器,用于处理和表现类似keyvalue的键值对Q其中key通常可用来快速查找,同时key是区分大写Qvalue用于存储对应于key的倹{Hashtable中keyvalue键值对均ؓobjectcdQ所以Hashtable可以支持Mcd的keyvalue键值对.</font> </p> <p> <font size="2">?哈希表的单操?/font> </p> <p> <font size="2"> 在哈希表中添加一个keyvalue键值对QHashtableObject.Add(key,value);<br /> 在哈希表中去除某个keyvalue键值对QHashtableObject.Remove(key);<br /> 从哈希表中移除所有元素:           HashtableObject.Clear(); <br /> 判断哈希表是否包含特定键keyQ    ?HashtableObject.Contains(key);<br /> 下面控制台程序将包含以上所有操作:<br />using System;<br />using System.Collections; file使用HashtableӞ必须引入q个命名I间<br />class hashtable<br />{<br />  public static void Main()<br />  {<br />  Hashtable ht=new Hashtable(); file创徏一个Hashtable实例<br />  ht.Add(E,e);dkeyvalue键值对<br />  ht.Add(A,a);<br />  ht.Add(C,c);<br />  ht.Add(B,b);</font> </p> <p> <font size="2">  string s=(string)ht[A];<br />  if(ht.Contains(E)) file判断哈希表是否包含特定键,其返回gؓtrue或false<br />    Console.WriteLine(the E keyexist);<br />  ht.Remove(C);U除一个keyvalue键值对<br />  Console.WriteLine(ht[A]);此处输出a<br />  ht.Clear();U除所有元?br />  Console.WriteLine(ht[A]); file此处不会有M输出<br />  }<br />}</font> </p> <p> <font size="2">?遍历哈希?/font> </p> <p> <font size="2"> 遍历哈希表需要用到DictionaryEntry ObjectQ代码如下:<br /> for(DictionaryEntry de in ht) filehtZ个Hashtable实例<br /> {<br />   Console.WriteLine(de.Key);de.Key对应于keyvalue键值对key<br />   Console.WriteLine(de.Value);de.Key对应于keyvalue键值对value<br /> }</font> </p> <p> <font size="2">?对哈希表q行排序</font> </p> <p> <font size="2">  对哈希表q行排序在这里的定义是对keyvalue键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因ؓ我们无法直接在Hashtableq行对keyq行重新排列Q如果需要Hashtable提供某种规则的输出,可以采用一U变通的做法Q?br /> ArrayList akeys=new ArrayList(ht.Keys); file别忘了导入System.Collections<br /> akeys.Sort(); file按字母顺序进行排?br /> for(string skey in akeys)<br /> {<br />   Console.Write(skey + );<br />   Console.WriteLine(ht[skey]);排序后输?br /> }<br /><br /><br />补充Q?</font> <font size="3">HashTable 的g可以是一个集合,HashTable中可以存放Q何对? 所对应的Key,Value都是对应的对象类? 比如说HashTable里还能放HashTable. <br /></font> </p> </div> <img src ="http://www.aygfsteel.com/Yipak/aggbug/225353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">ȝ</a> 2008-08-28 17:17 <a href="http://www.aygfsteel.com/Yipak/articles/CSharp.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">·</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">û</a>| <a href="http://" target="_blank">ʹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ʊ</a>| <a href="http://" target="_blank">佭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">֦</a>| <a href="http://" target="_blank">ٲ</a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank">żҸ</a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank">Ͳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ǩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ߺ</a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank">Ӽ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>