Visual C# .NET 入门:小结

来源:网络整理 浏览数:
发布时间:2017-12-31 11:10

本入门指南旨在帮助您用 Visual Studio 构建一个简单的 C# 项目。它无法进行全面的介绍。我们鼓励您查询关于 C# 和 .NET 的其他资源,以便更多地学习这些技术。在完成本教程之后,您至少有了一个可用的项目,在您研究 Visual C# 时,可以从修改此这些代码开始。

为了方便起见,我们提供了完整的源程序和项目文件。您可以通过本文档顶部的目录来访问它们。

其他资源我们强烈推荐下面这些关于 C# 和 .NET 平台的书籍。它们是开发人员尝试学习这些新技术的有益资源。

Archer, Tom.Inside C#.Redmond:Microsoft Press, 2001.

Deitel, Harvey.C#:How to Program.Upper Saddle River, NJ:Prentice Hall, 2001.

Gunnerson, Eric.A Programmer's Introduction to C#.New York:Apress, 2000.

Platt, David.Introducing Microsoft .NET.Redmond:Microsoft Press, 2001.

补遗:QuickSort C# .NET 的源代码下面是 QuickSort C# .NET 示例应用程序的完整源代码。您可以复制、使用和分发这些代码(无版权费)。注意,这些源代码以"原样"提供并且不作任何保证。

//
//  QuickSort C# .NET Sample Application
//  Copyright 2001-2002 Microsoft Corporation. All rights reserved.
//
//  MSDN ACADEMIC ALLIANCE []
//  This sample is part of a vast collection of resources we developed for
//  faculty members in K-12 and higher education. Visit the MSDN AA web site for more!
//  The source code is provided "as is" without warranty.
//
// Import namespaces
using System;
using System.Collections;
using System.IO;
// Declare namespace
namespace MsdnAA
{
    // Declare application class
    class QuickSortApp
    {
        // Application initialization
        static void Main (string[] szArgs)
        {
            // Print startup banner
            Console.WriteLine ("\ QuickSort C#.NET Sample Application");
            Console.WriteLine ("Copyright (c)2001-2002 Microsoft Corporation. All rights reserved.\ ");
            Console.WriteLine ("MSDN ACADEMIC ALLIANCE []\ ");
            // Describe program function
            Console.WriteLine ("This example demonstrates the QuickSort algorithm by reading an input file,");
            Console.WriteLine ("sorting its contents, and writing them to a new file.\ ");
            // Prompt user for filenames
            Console.Write ("Source: ");
            string szSrcFile = Console.ReadLine ();
            Console.Write ("Output: ");
            string szDestFile = Console.ReadLine ();
            // Read contents of source file
            string szSrcLine;
            ArrayList szContents = new ArrayList ();
            FileStream fsInput = new FileStream (szSrcFile, FileMode.Open, FileAccess.Read);
            StreamReader srInput = new StreamReader (fsInput);
            while ((szSrcLine = srInput.ReadLine ()) != null)
            {
                // Append to array
                szContents.Add (szSrcLine);
            }
            srInput.Close ();
            fsInput.Close ();
            // Pass to QuickSort function
            QuickSort (szContents, 0, szContents.Count - 1);
            // Write sorted lines
            FileStream fsOutput = new FileStream (szDestFile, FileMode.Create, FileAccess.Write);
            StreamWriter srOutput = new StreamWriter (fsOutput);
            for (int nIndex = 0; nIndex < szContents.Count; nIndex++)
            {
                // Write line to output file
                srOutput.WriteLine (szContents[nIndex]);
            }
            srOutput.Close ();
            fsOutput.Close ();
            // Report program success
            Console.WriteLine ("\ The sorted lines have been written to the output file.\ \ ");
        }
        // QuickSort implementation
        private static void QuickSort (ArrayList szArray, int nLower, int nUpper)
        {
            // Check for non-base case
            if (nLower < nUpper)
            {
                // Split and sort partitions
                int nSplit = Partition (szArray, nLower, nUpper);
                QuickSort (szArray, nLower, nSplit - 1);
                QuickSort (szArray, nSplit + 1, nUpper);
            }
        }
        // QuickSort partition implementation
        private static int Partition (ArrayList szArray, int nLower, int nUpper)
        {
            // Pivot with first element
            int nLeft = nLower + 1;
            string szPivot = (string) szArray[nLower];
            int nRight = nUpper;
            // Partition array elements
            string szSwap;
            while (nLeft <= nRight)
            {
                // Find item out of place
                while (nLeft <= nRight && ((string) szArray[nLeft]).CompareTo (szPivot) <= 0)
                    nLeft = nLeft + 1;
                while (nLeft <= nRight && ((string) szArray[nRight]).CompareTo (szPivot) > 0)
                    nRight = nRight - 1;
                // Swap values if necessary
                if (nLeft < nRight)
                {
                    szSwap = (string) szArray[nLeft];
                    szArray[nLeft] = szArray[nRight];
                    szArray[nRight] = szSwap;
                    nLeft = nLeft + 1;
                    nRight = nRight - 1;
                }
            }
            // Move pivot element
            szSwap = (string) szArray[nLower];
            szArray[nLower] = szArray[nRight];
            szArray[nRight] = szSwap;
            return nRight;
        }
    }
}