你能用C#w/UWP制作一个不可变的结构吗?
因此,最佳实践是在C#中生成不可变的结构 在UWP中,这不起作用,一个人会得到:你能用C#w/UWP制作一个不可变的结构吗?,c#,windows-runtime,uwp,immutability,C#,Windows Runtime,Uwp,Immutability,因此,最佳实践是在C#中生成不可变的结构 在UWP中,这不起作用,一个人会得到: error WME1013: 'Blah.Foo' contains non-public field 'System.Int32 Blah.Foo.bar'. Windows Runtime structures can contain only public fields. error WME1012: Type 'Blah.Foo' contains non-field member 'Blah.Foo.B
error WME1013: 'Blah.Foo' contains non-public field 'System.Int32 Blah.Foo.bar'. Windows Runtime structures can contain only public fields.
error WME1012: Type 'Blah.Foo' contains non-field member 'Blah.Foo.Bar.get()'. Windows Runtime structures can contain only fields.
error WME1012: Type 'Blah.Foo' contains non-field member 'Blah.Foo..ctor(System.Int32)'. Windows Runtime structures can contain only fields.
error WME1012: Type 'Blah.Foo' contains non-field member 'Blah.Foo.Bar'. Windows Runtime structures can contain only fields.
所以,好吧,我明白了,公共UWP结构实际上是一种值类型,所以让我们进入基础
public struct Foo
{
readonly public int Bar;
}
现在。。。。让我们初始化。。。使用对象初始值设定项
class FooTest
{
public static void FooFunc()
{
var baz = new Foo { Bar = 2 };
}
}
但是没有
error CS0191: A readonly field cannot be assigned to (except in a constructor or a variable initializer
是否有任何方法可以做到这一点,或者我是否应该执行以下操作之一:
UWP不能为结构提供抽象,它们的工作方式与C程序中的工作方式相同。是的,这两种方法都可以。你的问题措辞有误导性:C#和UWP都没有对结构施加这种限制。强调在Windows运行时组件项目或类似项目中使用公共结构可能是有意义的。
error CS0191: A readonly field cannot be assigned to (except in a constructor or a variable initializer