繁体   English   中英

如何将结构定义为属性?

[英]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.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM