在VS2015版本的C#,在一个大类中(Atest),声明一系列的静态成员类(Btest)。
意图实现无需实例化下,调用Btest的方法及成员。也就是普遍的全局变量;
但一直实现不了。大类(Atest)为普通类不可以,声明为Static也不可以。
烦请大神解答一下。
感谢老马的回复!
在段码增补后是可以运行了。是不说,普通类内部定义的静态类成员必须显式实例化后,才可以使用。并且是唯一的?而不是像一些资料中声明的,可以自动实例化?
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("程序开始");//程序开始
**_ if (Atest.BtestC == null) //检测未实例化下的状态
{ Atest.BtestC = new Btest(); }**_
if (Atest.BtestC == null) //检测未实例化下的状态
{ Console.WriteLine ("普通类的成员:静态类为空"); } //运行为无数据
else
{ Atest.BtestC.Ashow (); }
Console.WriteLine(Atest.AAid);//显示为空
Atest.AAid = "已设置Atest.AAid"; //检测静态字符串变量
Console.WriteLine(Atest.AAid);//显示有数据
Atest NAtest = new Atest("实例化Atest");
Console.WriteLine(NAtest.Aid);//显示实例化后的标志
if (Atest.BtestC == null) //检测实例化下的类中状态
{ Console.WriteLine("普通类的成员:静态类为空"); } //运行为无数据
else
{ Atest.BtestC.Ashow(); }
//NAtest.BtestC.Ashow(); 此种方式不可以调用
Console.Read();
}
}
public class Atest
{
public static Btest BtestC { get; set; }
public static String AAid { get; set; }
public string Aid { get; set; }
public Atest()
{ Aid = "Default"; }
public Atest(string NAid )
{ Aid = NAid; }
}
public class Btest
{
public string Bid { get; set; }
public Btest()
{
Bid = "Default";
}
public Btest(string BBid )
{
Bid = BBid;
}
public void Ashow()
{
//Console.WriteLine(Bid);
Console.WriteLine("Btest.Ashow");
}
}
}