C# 如何使用struct属性生成默认值?
我想知道如何将[DefaultValue]属性应用于结构属性。您可以注意到,Microsoft是通过表单的大小和许多其他属性来实现的。它们的值类型是大小、点等。我希望对自定义结构执行相同的操作。这取决于属性类型——您只能在属性中使用常量值,因此它必须是基元类型、字符串、枚举类型或在C# 如何使用struct属性生成默认值?,c#,struct,C#,Struct,我想知道如何将[DefaultValue]属性应用于结构属性。您可以注意到,Microsoft是通过表单的大小和许多其他属性来实现的。它们的值类型是大小、点等。我希望对自定义结构执行相同的操作。这取决于属性类型——您只能在属性中使用常量值,因此它必须是基元类型、字符串、枚举类型或在const上下文中有效的任何其他类型 因此,如果您的属性是字符串,您只需执行以下操作: [DefaultValue("foo")] public string SomeProperty { get; private s
const
上下文中有效的任何其他类型
因此,如果您的属性是字符串,您只需执行以下操作:
[DefaultValue("foo")]
public string SomeProperty { get; private set; }
请注意,此不会影响结构的默认构造函数的行为,该构造函数仍会将
SomeProperty
初始化为null;此属性仅影响Visual Studio属性窗格的行为。[DefaultValue]
属性仅适用于设计器/代码生成器/etc。您不能将其用于structs
<代码>结构全部是值类型,不支持默认构造函数。当创建结构的对象时,它的所有属性/字段都设置为默认值。您无法更改此行为
MSDN参考:
评论:
可以创建DefaultValueAttribute
有任何价值。会员违约
值通常是其初始值。
可视化设计器可以使用默认设置
值重置成员的值。
代码生成器可以使用默认值
值也可用于确定代码是否
应为成员生成
注:
DefaultValueAttribute不会导致
要自动删除的成员
使用属性的
价值必须设置初始值
在你的代码中
这就是一个例子。使用字符串初始化值是一个必要的缺点,在属性构造函数中可以使用的类型非常有限。只有简单的值类型、字符串、类型和它们的一维数组
要实现这一点,必须为结构编写类型转换器:
[TypeConverter(typeof(PointConverter))]
[// etc..]
public struct Point
{
// etc...
}
MSDN库中关于类型转换器的文档不是很好。使用.NET类型的转换器,您可以使用参考源查看其源代码,或者使用Reflector进行反向工程,这是您自己工作的一个很好的起点。顺便说一句,注意文化
[TypeConverter(typeof(PointConverter))]
[// etc..]
public struct Point
{
// etc...
}