Tag: default value

构造函数中的C#默认值与两个用于序列化的构造函数相同

当我为构造函数提供默认值时 public MyClass(string description = null) { …. } 这相当于 public MyClass() { …. } public MyClass(string description) { …. } 在序列化方面 。 换句话说,是否可以使用默认构造函数 ? 实际上它是,但是当我使用序列化时,我会遇到一些问题吗?

c#中的XML序列化和DefaultValue(“”)相关问题

我的class属性有默认值,它将序列化。 public class DeclaredValue { [XmlElement(ElementName = “Amount”, DataType = “double”, IsNullable = false), DefaultValue(999)] public double Amount { get; set; } [XmlElement(ElementName = “Reference2”, DataType = “string”, IsNullable = false), DefaultValue(“”)] public string Reference2 { get; set; } } 所以我们创建了DeclaredValue类的实例并为Reference2属性提供了值,并且没有为Amount赋值。 因此,当我们序列化类DeclaredValue时,在我的xml中找不到数量的标签。 我提到金额“999”的默认值,然后为什么它不能在序列化中工作。 我希望如果不为金额分配任何东西,那么amoun标签应该在我的xml中有默认值。 如果用户不为此属性分配任何内容,我需要以什么方式装饰它在序列化后始终在xml中带有默认值的amount属性。 请指导我在代码中需要更改的内容以获得我想要的输出。

检查给定对象(引用或值类型)是否等于其默认值

我正试图找到一种方法来检查并查看给定对象的值是否等于其默认值。 我环顾四周想出来: public static bool IsNullOrDefault(T argument) { if (argument is ValueType || argument != null) { return object.Equals(argument, default(T)); } return true; } 我遇到的问题是我想这样称呼它: object o = 0; bool b = Utility.Utility.IsNullOrDefault(o); 是o是一个对象,但我想让它弄清楚基类型并检查它的默认值。 在这种情况下,基类型是一个整数,我想在这种情况下知道该值是否等于default(int),而不是default(object)。 我开始认为这可能是不可能的。

为什么当我用JSON.NET反序列化时忽略我的默认值?

我正在使用JSON.NET作为我的主序列化器。 这是我的模型,看看我已经设置了一些JSONProperties和一个DefaultValue 。 public class AssignmentContentItem { [JsonProperty(“Id”)] public string Id { get; set; } [JsonProperty(“Qty”)] [DefaultValue(1)] public int Quantity { get; set; } } 当我序列化List ,它做得很好: private static JsonSerializerSettings s = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }; OUTPUT: [{“Id”:”Q0″},{“Id”:”Q4″},{“Id”:”Q7″}] 但是当我想反序列化这个jsonContent时,属性Qty始终为0并且未设置为默认值。 我的意思是,当我反序列化jsonContent时,因为Quantity的DefaultValue应该是1而不是0。 public static List DeserializeAssignmentContent(string jsonContent) { return JsonConvert.DeserializeObject<List>(jsonContent, s); […]

如何告诉XmlSerializer始终使用序列化属性?

我正在使用DefaultValue属性来获取正确的PropertyGrid行为(它以粗体显示与默认值不同的值)。 现在,如果我想使用XmlSerializer序列化显示的对象,则xml-file中将没有具有默认值的属性的条目。 告诉XmlSerializer序列化这些仍然是最简单的方法是什么? 我需要它来支持“版本”,所以当我稍后在代码中更改默认值时 – serialized属性获取它已序列化的值,而不是“最新”的值。 我可以考虑以下事项: 覆盖PropertyGrid行为(使用自定义属性,因此它将被XmlSerializer忽略); 做一些自定义的xml-serialization,忽略DefaultValue ; 在将对象传递给XmlSeriazer之前对其执行某些操作,以便它不再包含DefaultValue 。 但是我有可能错过了一些秘密财产,它可以做到这一点而没有太大的痛苦= D. 这是我想要的一个例子: private bool _allowNegative = false; /// /// Get or set if negative results are allowed /// [Category(CategoryAnalyse)] [Admin] [TypeConverter(typeof(ConverterBoolOnOff))] //[DefaultValue(false)] *1 public bool AllowNegative { get { return _allowNegative; } set { _allowNegative = value; ConfigBase.OnConfigChanged(); } } //public void […]

为什么我必须在默认为0时为C#中的int赋值?

这有效: class MyClass { int a; public MyClass() { int b = a; } } 但这会产生编译器错误(“使用未分配的局部变量’a’”): class MyClass { public MyClass() { int a; int b = a; } } 据我所知,这是因为在第一个例子中,从技术上讲,编译器不知道没有分配’a’。 在后一个例子中,’a’是在本地定义的,因此很容易跟踪。 但为什么后一个例子不起作用? 不要将整数默认为0吗? 这是编译器对“最佳实践”强制执行的操作。 还是有另一个原因吗?

DefaultValue属性不适用于我的自动属性

我有以下自动属性 [DefaultValue(true)] public bool RetrieveAllInfo { get; set; } 当我尝试在代码中使用它时我发现默认的false为false我认为这是bool变量的默认值,有没有人知道什么是错的!?

返回默认值。 (C#)

我正在创建自己的字典,但我无法实现TryGetValue函数。 当找不到密钥时,我没有任何东西要分配给out参数,所以我保持原样。 这会导致以下错误:“必须在控制离开当前方法之前分配out参数’value’” 所以,基本上,我需要一种方法来获取默认值(0,false或nullptr取决于类型)。 我的代码类似于以下内容: class MyEmptyDictionary : IDictionary { bool IDictionary.TryGetValue (K key, out V value) { return false; } …. }

设置C#可选参数的默认值

每当我尝试将可选参数的默认值设置为资源文件中的某些内容时,我会得到编译时错误 ‘message’的默认参数值必须是编译时常量。 有什么办法可以改变资源文件的工作方式来实现这个目标吗? public void ValidationError(string fieldName, string message = ValidationMessages.ContactNotFound) 在此, ValidationMessages是一个资源文件。