第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C#控制臺(tái)如何保持輸出最簡(jiǎn)單的版本?

C#控制臺(tái)如何保持輸出最簡(jiǎn)單的版本?

C#
SMILET 2021-12-25 16:43:23
我對(duì) C# 很陌生;有人知道如何在.txt不啟動(dòng)新進(jìn)程的情況下將所有輸出行寫入文件嗎?此代碼僅寫入最后一條記錄:class Program{    static void Main(string[] args)    {        WezKomponent("Win32_DiskDrive", "Model");        Console.ReadKey();    }    private static void WezKomponent(string ass, string sax)    {        ManagementObjectSearcher wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass);        foreach (ManagementObject pie in wez.Get())        {            Console.WriteLine(Convert.ToString(pie[sax]));            StreamWriter SW = new StreamWriter(@"HDD.txt");            SW.WriteLine(Convert.ToString(pie[sax]));            SW.Close();        }    }}
查看完整描述

3 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

實(shí)際上,它確實(shí)將所有記錄寫入文件,問(wèn)題是每次都覆蓋文件,因此您觀察到只保留最后一條記錄。

對(duì)此有兩種解決方案:

  1. 在循環(huán)之前打開(kāi)文件,寫入所有記錄,然后關(guān)閉文件

  2. 在循環(huán)內(nèi)打開(kāi)文件,但以追加新內(nèi)容的方式進(jìn)行

一般來(lái)說(shuō),讓第一個(gè)正確更容易,所以這里是如何做到這一點(diǎn)的:

  1. 移動(dòng)流的開(kāi)放起來(lái),并循環(huán)

  2. 移動(dòng)流的收盤下跌,并走出循環(huán)

本質(zhì)上,您采用以下代碼行:

private static void WezKomponent(string ass, string sax)

{

    ManagementObjectSearcher wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass);

    foreach (ManagementObject pie in wez.Get())

    {

        Console.WriteLine(Convert.ToString(pie[sax]));


        StreamWriter SW = new StreamWriter(@"HDD.txt");

        SW.WriteLine(Convert.ToString(pie[sax]));

        SW.Close();

    }

}

并將它們更改為:


private static void WezKomponent(string ass, string sax)

{

    ManagementObjectSearcher wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass);


    StreamWriter SW = new StreamWriter(@"HDD.txt");

    foreach (ManagementObject pie in wez.Get())

    {

        Console.WriteLine(Convert.ToString(pie[sax]));


        SW.WriteLine(Convert.ToString(pie[sax]));

    }

    SW.Close();

}

此外,為了在出現(xiàn)錯(cuò)誤時(shí)更加安全,最好使用以下語(yǔ)法:


using (... = new SomethingThatImplementsIDisposable(...))

{

}

比這個(gè):


... = new SomethingThatImplementsIDisposable(...);

...

...Close(); // or .Dispose();

所以這是你方法的更好版本:


private static void WezKomponent(string ass, string sax)

{

    using (ManagementObjectSearcher wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass))

    using (StreamWriter SW = new StreamWriter(@"HDD.txt"))

    {

        foreach (ManagementObject pie in wez.Get())

        {

            Console.WriteLine(Convert.ToString(pie[sax]));


            SW.WriteLine(Convert.ToString(pie[sax]));

        }

    }

}

之所以這樣更好,是因?yàn)槟拇a中可能會(huì)出現(xiàn)異常。如果發(fā)生這種情況,SW.Close();將不會(huì)被執(zhí)行,這意味著您將流和文件保持打開(kāi)狀態(tài),至少比預(yù)期的時(shí)間長(zhǎng)。使用這樣的using子句,如果內(nèi)部發(fā)生異常,Dispose將調(diào)用這些對(duì)象上的方法,關(guān)閉文件,在這種情況下也關(guān)閉ManagementObjectSearcher對(duì)象。


那么有什么方法可以進(jìn)一步改進(jìn)您的代碼嗎?是的,但前提是您知道我將要展示的其他語(yǔ)法,或者愿意學(xué)習(xí)。既然你說(shuō)你是 C# 的新手,你可能不知道它,并且你可能希望先熟悉現(xiàn)有的代碼,然后再讓它從你的角度變得更加復(fù)雜。


有多種寫入文本文件的方法,StreamWriter其中一種方法File.WriteAllLines是另一種方法,但這期望寫入的內(nèi)容作為字符串集合提供,這些字符串將作為一系列行寫入文件。


那么我們?cè)鯓硬拍軓哪愕腗anagementObjectSearcher對(duì)象獲得一個(gè)字符串列表呢?


通過(guò)一組統(tǒng)稱為“LINQ”或“語(yǔ)言集成查詢”的語(yǔ)法和 .NET 類。


這是您的方法的較短版本:


private static void WezKomponent(string ass, string sax)

{

    using (ManagementObjectSearcher wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass))

    {

        File.WriteAllLines(@"HDD.txt", wez

            .Get()

            .Select(pie => ConvertToString(pie[sax])));

    }

}

這甚至可以縮短為在每一行上添加更多內(nèi)容并刪除一些不必要的大括號(hào),并var在可以輕松從周圍代碼中辨別出確切類型時(shí)使用:


private static void WezKomponent(string ass, string sax)

{

    using (var wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass))

        File.WriteAllLines(@"HDD.txt", wez.Get().Select(pie => ConvertToString(pie[sax])));

}


查看完整回答
反對(duì) 回復(fù) 2021-12-25
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

class Program

{

    static void Main(string[] args)

    {


        WezKomponent("Win32_DiskDrive", "Model");


        Console.ReadKey();


    }

    private static void WezKomponent(string ass, string sax)

    {

        ManagementObjectSearcher wez = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + ass);


        StreamWriter SW = new StreamWriter(@"HDD.txt");

        foreach (ManagementObject pie in wez.Get())






        {


            Console.WriteLine(Convert.ToString(pie[sax]));


            SW.WriteLine(Convert.ToString(pie[sax]));




        }

        SW.Close();

    }


查看完整回答
反對(duì) 回復(fù) 2021-12-25
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

嘗試以不同的方式初始化 StreamWriter。

StreamWriter SW = new StreamWriter(@"HDD.txt", append: true);

注意append: true在構(gòu)造函數(shù)調(diào)用中。


查看完整回答
反對(duì) 回復(fù) 2021-12-25
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)