【发布时间】:2022-10-12 22:23:39
【问题描述】:
假设我们使用这个类:
public class UsefulClass
{
public string A { get; set; }
public string B { get; set; }
public int? C { get; set; }
public int? D { get; set; }
public decimal E { get; set; }
public decimal F { get; set; }
}
让我们考虑以下实例:
UsefulClass z_objUsefulInstance = new UsefulClass()
{
A = null,
C = null,
E = 0
};
此时,z_objUsefulInstance.A和C为null,E为0,B,D和F尚未初始化。
有没有办法自动判断z_objUsefulInstance 的哪些属性尚未初始化,哪些已用null 或0 初始化?
编辑:根据大众的需求,为什么我需要这个:模拟一个类似于 EntityFramework 的数据库访问系统。现在所有属性都是一个特定的泛型类型,所以很容易知道哪个是null,哪个是Generic<T>.HasNullValue == true。但是这种泛型类型会导致各种问题,现在我们想摆脱它,尤其是当我们越来越熟悉Expressions 时。
【问题讨论】:
-
唯一的方法必须是使用带有支持字段和额外标志的属性来了解该属性是否已设置。
-
您是否需要允许它们在创建后初始化?否则,您可以设置设置器
init。这不是你要求的,但也许是你真正需要的。 -
所有这些都被初始化。也许不是你,而是编译器/运行时。每个字段都将由其类型的默认值初始化。
-
为什么你需要知道这些信息?根据答案你想做什么?
-
也许如果你解释你将如何使用这些信息,我们可以提供一个最小实现的编码示例。
标签: c# initialization