c# - 如何检查元组是否有任何项目?

标签 c# tuples

我有以下元组:

Tuple <string, string> UHRSCredentals;

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

如何检查 UHRSCredentals 是否还有除此之外的任何项目?

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

最佳答案

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

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!

关于c# - 如何检查元组是否有任何项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44109800/

相关文章:

c# - 仅通过 EWS 获取具有 "Free/Busy time, subject, location"权限级别的同事的预约

c# - 全局与成员函数

c# - 比较元组,忽略元素的顺序

python - 字符串拆分为字符,同时将其添加到元组

c# - 如何在不解压的情况下递归探索 zip 文件内容

c# - 为什么我可以使用集合初始值设定项和来自另一个类的私有(private)集合访问?

java - Java 中的元组与类

python - 函数与循环的结果

typescript - 为什么从any[] 的元组推断会变成[string, string, ... ],而从string[] 的元组推断会变成['literal1' , 'literal2' , ... ]

c# - knockout 排序似乎没有做任何事情