Svi*_*ish 13 c# data-containers data-structures
在创建简单的数据容器类时,它应该是什么?
上述例子:
struct MutableStruct
{
public string Text { get; set; }
public int Number { get; set; }
}
struct ImmutableStruct
{
public string Text { get; private set; }
public int Number { get; private set; }
public ImmutableStruct(string text, int number)
: this()
{
Text = text;
Number = number;
}
}
struct MutableStructWithConstructor
{
public string Text { get; set; }
public int Number { get; set; }
public MutableStructWithConstructor(string text, int number)
: this()
{
Text = text;
Number = number;
}
}
class MutableClass
{
public string Text { get; set; }
public int Number { get; set; }
}
class ImmutableClass
{
public string Text { get; private set; }
public int Number { get; private set; }
public ImmutableClass(string text, int number)
{
Text = text;
Number = number;
}
}
class MutableClassWithConstructor
{
public string Text { get; set; }
public int Number { get; set; }
public MutableClassWithConstructor(string text, int number)
{
Text = text;
Number = number;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么好的理由我们应该选择另一个吗?或者主要是将主观偏好分开?或者它在很大程度上依赖于特定用例?如果是这样,在哪些用例中你应该选择什么和为什么?
Mar*_*ell 11
几乎总是一堂课; 结构应该只用于值的东西- 例如,复数或货币类型/值对 - 并且应该几乎不排除是不可变的.
如果要进行数据绑定,无参数构造函数对于可变数据很方便,因为这允许系统在没有自己的附加代码的情况下创建实例.非空构造函数对于不可变数据非常重要.对于可变数据,对象初始去实现这个很长的路要走(虽然不是十分的验证等方面相同):
var obj = new Person {Name="Fred", DateOfBirth=DateTime.Today};
Run Code Online (Sandbox Code Playgroud)
您的类型是否不可变取决于您; mutable使得更容易进行数据绑定和序列化.通常,您倾向于在.NET中看到更多可变类型,但随着我们进入并行/多核时代,这可能会发生变化.
| 归档时间: |
|
| 查看次数: |
3521 次 |
| 最近记录: |