我正在尝试研究 C# 中的嵌套类。在阅读了许多文档和眼花缭乱之后,我仍然不清楚何时使用嵌套类。但据我所知,我做了一个小示例程序。我在下面粘贴我的代码。这个嵌套类程序是否以正确的逻辑实现? .嵌套类实际上使用什么 for ?。而且我对这个程序有疑问,我在程序中指明了这个疑问。请帮我 ...
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Bank bankObj = new Bank();
bankObj.CreateAccount();
bankObj.ShowMyAccountNumber();
}
}
class Bank
{
static int accountNumber; // here if I just declare this as int accountNumber without static it showing an error in the CreatePersonalAccount(int accNo) method's first line ie accountNumber = accNo; as "Cannot access a non-static member of outer type." What actually this error mean ?
public class BankAccountSection
{
public bool CreatePersonalAccount(int accNo)
{
accountNumber = accNo;
return true;
}
}
public void CreateAccount()
{
bool result = new BankAccountSection().CreatePersonalAccount(10001);
}
public void ShowMyAccountNumber()
{
MessageBox.Show(accountNumber.ToString());
}
}
最佳答案
嵌套类通常用于在封闭(外部)类之外没有用处的小型实用程序类。因此,嵌套类通常是 private
。 (甚至还有一个 FxCop rule 。)
您的代码
在您的情况下,嵌套类 BankAccountSection
并不是很有用,因为它本身没有状态。 CreatePersonalAccount
也可能只是外部类的一个方法。
关于 static int accountNumber;
:这将使 accountNumber
成为所有 Bank 对象之间的共享字段,这违背了整个目的。不要那样做。如果确实需要在内部类内部设置Bank
对象的某个字段,则需要将Bank
对象的引用传递给内部类。 (这与 Java 不同,Java 在某些情况下会自动提供此类引用。)在您的特定情况下,只需摆脱内部类即可。
合法用例的示例
有关的:
关于c# - C#中的嵌套类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15105736/