编程之路转自:cjavapy.com/article/55/

_  .NET(C#)中,自动属性(Auto-Implemented Properties)提供了一种简洁的方式来实现属性而无需显式定义字段。但直到C# 6.0版本之前,不能在自动属性的声明中直接为其指定默认值。从C# 6.0开始,可以在自动属性声明中直接初始化默认值。_

1、在构造函数中设置默认值

在C#的早期版本中,或者当需要更复杂的初始化逻辑时,可以在类的构造函数中设置自动属性的默认值。如自动属性是静态的(即属于类本身而不是类的实例),则可以在静态构造函数中设置其默认值。1)在构造函数中设置默认值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication
{
class Person
{
public Person()
{
Name = "Default Name";
}
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person p = new Person();
Console.WriteLine(p.Name);
Console.ReadKey();
}
}
}

2)使用一般写法设置默认值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication
{
class Person
{
private string name = "Default Name";
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
} public class MyClass
{
public static int MyStaticProperty { get; set; } static MyClass()
{
MyStaticProperty = 10; // 在静态构造函数中设置默认值
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person();
Console.WriteLine(p.Name);
Console.WriteLine(MyClass.MyStaticProperty);
}
}
}

2、 直接在自动属性中初始化(C# 6.0及以后)

从C# 6.0开始,可以在自动属性的声明中直接指定默认值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication
{
class Person
{
public string Name { get; set; } = "Default Name"; } class Program
{
static void Main(string[] args)
{
Person p = new Person();
Console.WriteLine(p.Name);
}
}
}

3、使用属性初始化器(C# 9.0及以后)

从C# 9.0开始,可以使用属性初始化器(Property Initializers)在创建对象时直接初始化属性。



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication
{
class Person
{
public string Name { get; set; } = "Default Name"; } class Program
{
static void Main(string[] args)
{
Person p = new Person() { Name = "cjavapy.com" };
Console.WriteLine(p.Name);
}
}
}

C#自动属性提供默认值的方法的更多相关文章

  1. 【C#】妈妈再也不用担心自定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚

    ------------------更新:201411190903------------------ 经过思考和实践,发现套路中的第1条是不必要的,就是完全可以不用定义一个名为Default+属性名 ...

  2. Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  3. 自定义控件如何给特殊类型的属性添加默认值 z

    定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就是给属性指定一个默认值(就是可以在VS中右键该 ...

  4. 自定义控件如何给特殊类型的属性添加默认值 z(转)

    自定义控件如何给特殊类型的属性添加默认值 z 定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就 ...

  5. MySQL设置当前时间为默认值的方法

    方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...

  6. swift学习笔记(六)析关闭过程和使用分配给属性的默认值

    一.通过关闭和功能的默认实现财产值 当存储属性默认值需要定制,能为客户提供通过关闭或全局函数的自定义默认值. 注意:全局函数的结构,和枚举使用keywordstatic大喊    用classkeyw ...

  7. 如何为一个类型为Color的属性设置默认值

    最近在研究GDI+的时候,用winform来写自定义控件遇到需要为控件的属性设置默认值,但这个属性的类型是System.Drawing.Color.本文只是总结一下各种设置的方法. Example [ ...

  8. php函数指定默认值的方法

    发布:JB02   来源:脚本学堂     [大 中 小] 本文介绍下,在php编程中,指定函数的默认值的方法,分享二个例子,供大家学习参考下.本文转自:http://www.jbxue.com/ar ...

  9. python属性的默认值

    python类的构造函数中属性可以设置默认值,实例化出来的对象如果属性使用默认值,默认值的地址是相同的. class A: def __init__(self, name = []): self.__ ...

  10. ASP.NET文本框密码赋默认值的方法

    对于普通的文本输入框,可以使用下边的方法赋默认值: <asp:TextBox ID="TextBox1" runat="server">12345& ...

随机推荐

  1. Jenkins+Ant+JaCoCo的代码覆盖率集成实践

    Jenkins+Ant+JaCoCo的代码覆盖率集成实践 一.工具介绍 Jenkins: Jenkins是一个开源的.基于Java开发的持续集成工具,它可以帮助开发人员自动化构建.测试和部署软件项目. ...

  2. 具体数学组合数习题选做(Genshining)

    8.计算 \[\sum_k\binom{n}{k}(-1)^k(1-\frac{k}{n})^n \] 解: 考虑 \[\sum_{k=0}^n\binom{n}{k}(-1)^kf(k)=(-1)^ ...

  3. redis - [03] 配置&命令

    题记部分 一.配置(Config) 二.命令(Command) (1)启动redis服务:redis-server.exe redis.windows.conf (2)连接redis-server:r ...

  4. Git - 安装Git

    下载>> 安装 >> 下载 登录Git官网:https://git-scm.com/ 点击想要安装的版本 安装 1. 点击下一步(Next) 2. 选择安装路径 3. Git相 ...

  5. PowerShell开发游戏 · 打蜜蜂

         可以看到,虽然非常抽象简单,但是基础游戏框架已经搭建,游戏机制完善,就缺美工了,哈哈~~~~ [首先] Powershell不是用来开发游戏的,但是没人规定不能开发.因为它可以调取windo ...

  6. 咨询公司:趁着AI人工智能的浪潮还能持续,好好享受吧……

    在人工生成式智能热潮的喧嚣与狂热之中,咨询行业正经历一场基本未被察觉却极具变革性的革命,这场变革将塑造它的未来. 传统咨询依赖于由高素质专业人士组成的团队,他们专注于研究.数据分析,并提供定制化建议. ...

  7. 【Ryan】: linux下挂在共享文件夹

    点击查看代码 $ vmware-hgfsclient $ sudo vmhgfs-fuse .host:/ /mnt -o allow_other

  8. 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本地AI Agent

    一.天价邀请码VS开源革命:打工人今夜无眠 昨夜科技圈被两个关键词刷屏:​Manus激活码炒至5万元5,7,​GitHub神秘项目OpenManus突然开源6,7.这场戏剧性对决的背后,是一场关于「A ...

  9. 【Python】批量提取Fibersim xml文件中的节点网格数据

    程序功能: 输入需求: fibersim导出的ply 的xml文件,可以很多个也没问题.但名字要有规律,不然没法循环读写.比如我自己用的就是x1.xml.x2.xml.Y1.xml......的文件名 ...

  10. 错误修正记录: [Vivado 12-8300] Launch HLS failed! Please see vitis_hls.log for details.

    起因 使用了Vivado Video Frame Buffer Read和Vivado Video Frame Buffer Write,按out of context模式综合失败.vivado版本2 ...