首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#3.0自动属性 ​​- 是否可以添加自定义行为?

C# 3.0 自动属性(Auto-Properties)可以用于自动初始化对象的属性,以便在创建新对象或实例时自动分配值。您可以通过添加自定义行为来扩展 C# 3.0 自动属性的功能,方法是在属性访问器的括号中显式地定义一个方法或计算表达式,并根据该表达式自动计算和设置属性的值。例如:

代码语言:csharp
复制
public string Name { get; set; }

在上述定义中,属性 Name 的值是根据在 set 方法中定义的表达式自动计算和获取的,如 set { Name = GetFullName(base.Name); }

要实现自定义行为,可以将一些逻辑放在一个计算属性中,例如:

代码语言:csharp
复制
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属性和类中定义了 FullNameFirstLetterToLower 方法。这些方法可用于根据输入的属性名称计算相应的值,如全名称或首字母大写的首字母。通过将计算属性应用于具有自动属性的类,您可以在不显式提供 Name属性值的情况下计算该值,并在需要时获取该值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻

    C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly、link、chain、thread和fusion等字眼而打击初学者的信心,否则许多人会误以为这是一本讲冶金而不是程序设计的书,本书主要读者是已经有一定变成经验,并想多学一种语言“傍身”的开发者,但我还是忍住编排了本书的内容,以便使各种层次的开发者能够从中获益。 初学者;假如你是变成新手,本书将帮助你从入门程序

    03
    领券