[英]How is a struct defined as a property?
标题可能不正确,如果是这样,请更改。 我不确定如何问我的问题,所以只要看一下代码就可以了。
使用注释的代码将起作用,但是我想知道为什么实际的代码不起作用。 我确定这是错误的,但是如何解决? 还是这不是怎么做的?
using System;
namespace SomethingAwful.TestCases.Structs
{
public class Program
{
public static void Main()
{
Foo f = new Foo();
f.Bar.Baz = 1;
Console.WriteLine(f.Bar.Baz);
}
}
public class Foo
{
public struct FooBar
{
private int baz;
public int Baz
{
get
{
return baz;
}
set
{
baz = value;
}
}
public FooBar(int baz)
{
this.baz = baz;
}
}
private FooBar bar;
public FooBar Bar
{
get
{
return bar;
}
set
{
bar = value;
}
}
//public FooBar Bar;
public Foo()
{
this.bar = new FooBar();
//this.Bar = new FooBar();
}
}
}
结构仅按值复制,因此您要做的只是更改返回的副本。 使用课程。
采用
Foo.FooBar myFooBar = new Foo.FooBar { Baz = 1 };
f.Bar = myFooBar;
就像史蒂文(Steven)所说的那样,您需要创建一个结构实例,并为其设置属性。 否则,它将按值传递。
另外,您可以将结构视为“已分配”,因此您不需要太new()。 代替
this.Bar = new FooBar();
做就是了
this.Bar.Baz = 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.