我正在寻找一种更好的方法来完成以下代码块,它是EmailAddress类/对象的一部分。根据我的想法,零件数组是笨重的,我想知道是否没有一个使用元组或Linq的衬垫可以整理一下。
此外,对于电子邮件地址的第一部分,什么是比“别名”更好的属性名称?
public string Alias { get; private set; }
public string Domain { get; private set; }
private void Split(string emailAddress)
{
var parts = emailAddress.Split(new[] { '@' });
Alias = parts[0];
Domain = parts[1];
}
答案 0 :(得分:5)
嗯,如果你利用参数数组,它就不那么笨重了:
var parts = emailAddress.Split('@');
或者(为了避免每次都创建一个新数组),您可以重用现有的数组:
private static readonly char[] EmailSplitter = new char[] {'@'};
...
var parts = emailAddress.Split(EmailSplitter);
除此之外,我没有看到它特别笨重 - 尽管如果这就是EmailAddress
类所做的全部,我会在构造函数(或静态方法)中执行此操作并使对象不可变
您可能希望使用“localpart”而不是“别名” - 这将与RFC-822保持一致。
答案 1 :(得分:0)
我会说没关系。
另一种方法是使用正则表达式,但除了能够在拆分格式的同时验证格式之外,你不会获得太多收益。