C# 如何在下面的代码中进行代码重构?

C# 如何在下面的代码中进行代码重构?,c#,printing,C#,Printing,有人给我小费吗? 我在编码方面是新手:-) private void打印文件\u btn\u单击(对象发送方,事件参数e) { PrintDocument printDoc=新的PrintDocument(); PrintDocument printDoc2=新的PrintDocument(); List docList=新列表(); printDoc.DocumentName=@“C:\Users\test\Desktop\1\1.pdf”; printDoc2.DocumentName=@“

有人给我小费吗? 我在编码方面是新手:-)

private void打印文件\u btn\u单击(对象发送方,事件参数e)
{
PrintDocument printDoc=新的PrintDocument();
PrintDocument printDoc2=新的PrintDocument();
List docList=新列表();
printDoc.DocumentName=@“C:\Users\test\Desktop\1\1.pdf”;
printDoc2.DocumentName=@“C:\Users\test\Desktop\1\2.pdf”;
docList.Add(printDoc);
docList.Add(printDoc2);
printDoc.Print();
printDoc2.Print();
}

我认为这看起来更干净,我有一个不需要的文档列表

private void PrintFile_btn_Click(object sender, EventArgs e)
{
        List<string> docs= new List<string> 
        {
         @"C:\Users\test\Desktop\1\1.pdf",
         @"C:\Users\test\Desktop\1\2.pdf"
        };

        foreach(var doc in docs)
        {
              var printDoc = new PrintDocument();
              printDoc.DocumentName = doc;
              printDoc.Print();
        }
}
private void打印文件\u btn\u单击(对象发送方,事件参数e)
{
列表文档=新列表
{
@“C:\Users\test\Desktop\1\1.pdf”,
@“C:\Users\test\Desktop\1\2.pdf”
};
foreach(单据中的var单据)
{
var printDoc=新的PrintDocument();
printDoc.DocumentName=doc;
printDoc.Print();
}
}

我认为这看起来更干净,我有一个不需要的文档列表

private void PrintFile_btn_Click(object sender, EventArgs e)
{
        List<string> docs= new List<string> 
        {
         @"C:\Users\test\Desktop\1\1.pdf",
         @"C:\Users\test\Desktop\1\2.pdf"
        };

        foreach(var doc in docs)
        {
              var printDoc = new PrintDocument();
              printDoc.DocumentName = doc;
              printDoc.Print();
        }
}
private void打印文件\u btn\u单击(对象发送方,事件参数e)
{
列表文档=新列表
{
@“C:\Users\test\Desktop\1\1.pdf”,
@“C:\Users\test\Desktop\1\2.pdf”
};
foreach(单据中的var单据)
{
var printDoc=新的PrintDocument();
printDoc.DocumentName=doc;
printDoc.Print();
}
}

最好重构此方法,并将打印逻辑移出该方法之外。可能您也不需要列表。如果您有一些文件名模式,您可以进一步优化它

    private void PrintFile_btn_Click(object sender, EventArgs e)
    {
        PrintDoc(@"C:\Users\test\Desktop\1\1.pdf");
        PrintDoc(@"C:\Users\test\Desktop\1\2.pdf");
    }

    private void PrintDoc(string documentPath)
    {
        PrintDocument printDoc = new PrintDocument();
        printDoc.DocumentName = documentPath;
        printDoc.Print();
    }

最好重构此方法并将打印逻辑移出该方法之外。可能您也不需要列表。如果您有一些文件名模式,您可以进一步优化它

    private void PrintFile_btn_Click(object sender, EventArgs e)
    {
        PrintDoc(@"C:\Users\test\Desktop\1\1.pdf");
        PrintDoc(@"C:\Users\test\Desktop\1\2.pdf");
    }

    private void PrintDoc(string documentPath)
    {
        PrintDocument printDoc = new PrintDocument();
        printDoc.DocumentName = documentPath;
        printDoc.Print();
    }


要多次打印同一文档吗?只需使用for loop不,我只想打印一些文档。我找到了这个,它很有效。你能帮我进行代码重构吗?为什么要创建一个列表?在添加这些元素后就不会使用它,因此它浪费了行、内存和时间。只需删除第5、8、9行(
List…
docList.add…
docList.add…
),因为我想将多个文档发送到虚拟打印机(这是我的默认打印机)。如果单击“确定”,虚拟打印机将收集文档并打印@Shirkama我想我们当中有人误解了什么。您将该
列表
发送到您的虚拟打印机的何处?据我所知,您使用
Print
方法发送数据,该方法根本不使用
列表
,只使用它所属的对象。是否要多次打印同一文档?只需使用for loop不,我只想打印一些文档。我找到了这个,它很有效。你能帮我进行代码重构吗?为什么要创建一个列表?在添加这些元素后就不会使用它,因此它浪费了行、内存和时间。只需删除第5、8、9行(
List…
docList.add…
docList.add…
),因为我想将多个文档发送到虚拟打印机(这是我的默认打印机)。如果单击“确定”,虚拟打印机将收集文档并打印@Shirkama我想我们当中有人误解了什么。您将该
列表
发送到您的虚拟打印机的何处?据我所知,您使用
Print
方法发送数据,该方法根本不使用
列表
,只使用它所属的对象。您也可以从其他地方获取该列表,这样看起来肯定会更干净。非常感谢!:-)若我们说的是代码重构,那个么最好将文档打印的逻辑转移到另一个方法,即事件处理程序之外。直接在事件处理程序中实现逻辑不是一种好的做法。好的,谢谢@DmitryYou也可以从其他地方获得该列表,这样看起来肯定会更干净。非常感谢!:-)若我们说的是代码重构,那个么最好将文档打印的逻辑转移到另一个方法,即事件处理程序之外。直接在事件处理程序中实现逻辑不是一种好的做法。好的,谢谢@Dmitry