【发布时间】:2015-08-07 10:12:30
【问题描述】:
鉴于以下class:
public class DataPair{
public string Key { get; set; }
public object Value { get; set; }
public DataPair(string key, object value)
{
Key = key;
Value = value;
}
}
有没有机会实现类似的东西
public static implicit operator DataPair(dynamic value)
{
return new DataPair(value.Key, value.Value);
}
所以我可以这样创建一个新实例
DataPair myInstance = {"key", "value"};
【问题讨论】:
-
如果存在的话,你为什么不使用调用默认构造函数的对象初始化?
-
@XaweryWiśniowiecki:你能解释一下我将如何准确地调用对象初始化吗?
-
我认为文档中的这个示例将简单地阐明它:) msdn.microsoft.com/en-us/library/bb397680.aspx
-
@XaweryWiśniowiecki:好的。作为一个懒惰的开发者,我认为会有一些“速记”的方式来写
new DataPair{Key = "key", Value = "value"}。例如。一个方法void Create(params DataPair[] values)被称为Create({"key1", "value1"},{"key2", "value2"}) -
我也是懒开发者,觉得
new DataPair{Key = "key", Value = "value"}很短。如果你想要更短,你可以创建带有 2 个参数的构造函数。对象初始化器还允许您以{{Key = "key", Value = "value"}{Key = "key", Value = "value"}{Key = "key", Value = "value"}}的方式将对象分配给List<>。
标签: c# dynamic constructor implicit-conversion