C#中的条件Streamwrite

gfp*_*ste 0 c# code-formatting filestream

假设我有一个成员列表,每个成员都是一个自定义对象:

public class pail
{
    public string milk;
    public string water;
    public string butter;
    public string beer;
}



public class AddToPail()
{
    private List<pail> _pailList = new List<pail>();
    PSVM(String[] args)
    {
        for(int i = 0; i < 200; i++)
        {
            pail newPail = new Pail();
            switch(i)
            {
                case 1:
                {
                    newPail.milk = "This pail has milk";
                }
                break;
                case 2:
                {
                    newPail.butter = "This pail has butter";
                }
                break;
                case 3:
                {
                    newPail.water = "This pail has water";
                }
                break;
                case 4:
                {
                    newPail.beer = "This pail has beer";
                }
                break;
            }
            _pailList.Add(newPail);
        }
        foreach (pail thisPail in _pailList)
        {
            using (StreamWriter SW = new StreamWriter(@"C:\pail.txt")
            {
                if (!thisPail.milk.IsNullOrEmpty())
                {
                    SW.WriteLine(thisPail.milk);
                }
                else if (!thisPail.butter.IsNullOrEmpty())
                {
                    SW.WriteLine(thisPail.butter);
                }
                else if (!thisPail.beer.IsNullOrEmpty())
                {
                    SW.WriteLine(thisPail.beer);
                }
                else if (!thisPail.water.IsNullOrEmpty())
                {
                    SW.WriteLine(thisPail.water);
                }
                else
                {
                    Console.Writeline("oops");
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我想设置一个只打印真值的StreamWriter,而不必编写一百万if,否则if,else语句...是否有一种简单的方法或库在C#中执行此操作?我基本上都在寻找一种方法,只能以简洁明了的方式打印出真正的价值观.有没有人对如何处理这个有任何建议?

非常感谢你!

编辑 因此,我的最终目标是拥有一个拥有大约20名成员的对象.该对象会自动填充,填充脚本可能会将某些成员留空.我希望能够以CSV格式打印成员,而不必有20个if语句,以便在通过streamwriter输出之前查看对象中的特定成员是否已被实例化.

编辑2

我改变了我的代码,使其更接近我需要它做的事情.对不起以前的不良解释.

Eth*_*own 5

我认为你应该稍微重构一下你的程序.对于初学者,我会使用枚举用于存储桶内容:

public enum EBucketContents { Milk, Water, Butter, Beer };
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用字典而不是布尔列表:

var pail = Dictionary<EBucketContents,bool>();
Run Code Online (Sandbox Code Playgroud)

现在只输出那些真实的东西是一件简单的事情:

foreach( var kvp in pail.Where( x => x.Value ) ) {
    SW.WriteLine( "pail has " + kvp.Key.ToString().ToLower() )
}
Run Code Online (Sandbox Code Playgroud)