2013-06-03 49 views
1

我有一个类的结构是这样的:我应该使用属性来访问基类全局变量吗?

public class PingtreeReq : ProviderRequest 
{ 
    // I want to use _residentialService here! 
} 

public class ProviderRequest 
{ 
    // Should this be a variable or property? 
    protected Dictionary<int, string> _residentialSerice; 
} 

如果我想使用这个varable从MyLenderRequest,是它更适合使用属性或访问它像这样作为受保护的足够varable?

+2

你的意思是你在'ProviderRequest'中有一个公共字段'_residentialStatus'? – V4Vendetta

+2

@ V4Vendetta - 从这个问题我推断_residentialStatus目前是'私人'和OP奇怪他是否应该使它受到保护或有一个(受保护的)属性。顺便说一句。我会使用一个属性,在'ProviderRequest'里面改变'_residentialStatus'的每一个调用,它并不需要直接使用这个变量来使用这个属性。然后,如果没有可以直接使用变量的地方,我可能会将其更改为自动属性。 – Corak

+0

什么是C#上下文中的“全局变量”?发布'_residentialStatus'定义。 – Dennis

回答

1

如果你打算使用它在外部使它成为一个公共属性,如果你只打算在继承类中使用它使它成为一个受保护的属性。

public class ProviderRequest 
{ 
    protected Dictionary<int, string> ResidentialService { get; set; } 
} 
+2

即使在被定义的类内部使用时,我也会直接使用该属性而不是字段。 – Bernard

+0

@Bernard - 同意。如果它只是一个只返回值的简单属性,那么*可能*。但是,再次,为什么不让它'{get;私人设置; }'。如果你想添加一些逻辑到属性你有使用它的代码的一部分和没有的部分,这不利于可预测性。 – Corak

+0

是的,我同意。在他的情况下,他谈到了一个领域,而不是使该领域对外可用,我会添加一个属性来公开该领域。 – Molibar

3

_residentialStatus更像是一个私人变量,这是私人的类。您可以在ProviderRequest中添加一个受保护的属性,该属性封装了私有变量并将其用于ProviderRequest