C# 3.0 自动属性(Auto-Properties)可以用于自动初始化对象的属性,以便在创建新对象或实例时自动分配值。您可以通过添加自定义行为来扩展 C# 3.0 自动属性的功能,方法是在属性访问器的括号中显式地定义一个方法或计算表达式,并根据该表达式自动计算和设置属性的值。例如:
public string Name { get; set; }
在上述定义中,属性 Name
的值是根据在 set
方法中定义的表达式自动计算和获取的,如 set { Name = GetFullName(base.Name); }
。
要实现自定义行为,可以将一些逻辑放在一个计算属性中,例如:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
private string _name;
public string Name => _name ??= FullName(FirstLetterToLower(_name ?? "") + LastName);
private static string GetFullName(string name) => String.Join(" ", name.Split(' ').Skip(1));
private static string FirstLetterToLower(string input)
{
if (String.IsNullOrEmpty(input))
{
return input;
}
char[] firstLetter = input[0].ToCharArray();
Array.Sort(firstLetter);
return new string(firstLetter).ToLower();
}
}
以上示例中,Name
属性和类中定义了 FullName
和 FirstLetterToLower
方法。这些方法可用于根据输入的属性名称计算相应的值,如全名称或首字母大写的首字母。通过将计算属性应用于具有自动属性的类,您可以在不显式提供 Name
属性值的情况下计算该值,并在需要时获取该值。
领取专属 10元无门槛券
手把手带您无忧上云