2013-04-16 84 views
0

我有一个结构结构和属性

namespace lib 
{ 
    public struct strct_Test 
    { 
     int a; 
     string b; 
    } 
} 

有些地方比我做

using lib; 

class one 
{ 
    private strct_Test var; 

    public strct_Test Var 
    { 
     get {return var;}  // or should it be like return var.a; return var.b; 
     set {var = value;}  // or should it be like var.a = value; var.b = value 
    } 
} 

所以任何人可以指导什么在代码中的注释中提到这里正确的做法?

+1

你意识到,'返回var.a;返回var.b;'与'return var;'有很大的区别,从某种意义上讲,返回值来自对象,另一个返回整个对象? – Shark

+4

你的问题不清楚,因为你的第一种类型是无用的 - 它有私人领域没有任何访问。你*不能*使用'one'类中的'var.a'。此外,我强烈建议您开始遵循C#的命名约定,了解自动实现的属性,并避免调用* anything *'var'(这是一个上下文关键字) –

+0

这取决于您想要对属性执行什么操作。 ..它会成为你的用户界面(绑定)的一部分,或将其他一些类使用你的setter设置结构 – WiiMaxx

回答

3

属性Var的类型是strct_Test

这意味着getter和setter应该使用该类型,就像您在代码中一样。

否则会导致编译错误。

+0

谢谢你的人! – saam

0

正确方法取决于你希望你的代码结构如何。

在您的示例中,您定义了类型的不可变属性。 strct_Test,所以如果你
你做这样的事情:

var o = new one(); 
o.Var.a = 10; 

var x = o.Var; 

//x.a != o.Var.a; 

希望这给你的代码的行为的想法,这样你就可以决定它是否为您的具体情况最好的架构。

1

问问你自己你想要做什么

你应该觉得我需要一些直接值?
这么写的属性,每次使用值(不是所有你

会我是从其他类更换整个STRUC?
so写属性为你的结构