在C#中,我们如何检查元组是否有任何项目?

时间:2017-05-22 09:49:50

标签: c#

我跟随Tuple:

Tuple <string, string> UHRSCredentals;

。 。

UHRSCredentals = new Tuple<string, string>(UserNameLine.Split('\t')[1], PasswordLine.Split('\t')[1]);

现在,我如何检查UHRSCredentals是否有任何项目? 除了这个 ?

if (UHRSCredentals.Item1 != "" && UHRSCredentals.Item2 !="")

2 个答案:

答案 0 :(得分:2)

您可以编写一个简单的扩展方法:

public static class TupleExtensions
{
    public static bool HasValue(this Tuple<string, string> tuple)
    {
        return !string.IsNullOrEmpty(tuple?.Item1) && !string.IsNullOrEmpty(tuple?.Item2);
    }
}

var UHRSCredentals = Tuple.Create(UserNameLine.Split('\t')[1], PasswordLine.Split('\t')[1]);
bool hasValue = UHRSCredentals.HasValue(); // True!

但也许你应该考虑一个小班来更清楚地表达和封装你的意图:

class UsernamePasswordPair
{
    public string Username { get; private set; }
    public string Password { get; private set; }
    public bool HasValue { get; private set; }

    public static UsernamePasswordPair Create(string usernameLine, string passwordLine)
    {
        UsernamePasswordPair pair = new UsernamePasswordPair();
        pair.Username = usernameLine?.Split('\t')[1];
        pair.Password = passwordLine?.Split('\t')[1];
        pair.HasValue = !string.IsNullOrEmpty(pair.Username) 
                && !string.IsNullOrEmpty(pair.Password);
        return pair;
    }
}

UsernamePasswordPair p1 = UsernamePasswordPair.Create(UserNameLine, PasswordLine);
bool hasValue = p1.HasValue; // True!

答案 1 :(得分:0)

你可以尝试:

UHRSCredentals == null

我没有测试过这个!