14 c# getter setter class member
假设我们有一个带有属性和getter/setter的类InnerClass.我们还有一个包含InnerClass的类OuterClass.
例如
class InnerClass
{
private int m_a;
private int m_b;
public int M_A
{
get
{
return m_a;
}
set
{
m_a = value;
}
}
}
class OuterClass
{
private InnerClass innerClass
}
Run Code Online (Sandbox Code Playgroud)
我如何为OuterClass的innerClass成员实现正确的getter和setter?
提前致谢!
Ada*_*son 26
语法不会有任何不同.只是...
public InnerClass InnerClass
{
get { return innerClass; }
set { innerClass = value; }
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如果你在.NET 3.5中使用C#,你可以使用自动属性生成功能,如果你拥有的只是一个简单的属性,它只是读写一个后备存储(就像你上面的那样).sytax类似于抽象属性:
public InnerClass InnerClass { get; set; }
Run Code Online (Sandbox Code Playgroud)
这会自动生成一个私有成员进行存储,然后从中读取并在其中get写入set.
Ben*_*ter 21
最优雅的方法是使用隐式getter和setter:
class InnerClass
{
public int a{ get; set; }
public int b{ get; set; }
}
class OuterClass
{
public InnerClass innerClass{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这隐含地与:
class InnerClass
{
private int _a;
public int a
{
get
{
return _a;
}
set
{
_a = value;
}
}
private int _b;
public int b
{
get
{
return _b;
}
set
{
_b = value;
}
}
}
class OuterClass
{
private InnerClass _innerClass;
public InnerClass innerClass
{
get
{
return _innerClass;
}
set
{
_innerClass = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两个定义含蓄地相同 - 减去相当多的击键次数.在第一个示例中,编译器将在幕后实现必要的私有字段,因此您不必这样做.第二种方法可以让您更好地控制正在发生的事情.