static变量问题

budong0000 2009-03-19 12:32:47
网上看的,定义一个泛型类,用表态变量来objCount计算该类某类型生成了多少个实例,如MyList<int>生成了两个实例。但追踪程序private static int objCount 始终为0, 不解。。请各位指点
代码如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3
{

public class MyList<T>
{
private static int objCount = 0;
public void Mylist()
{ objCount++; }
public int Count
{
get
{
return objCount;
}
}
}
public class SampleCalss { }
class Program
{
static void Main(string[] args)
{
MyList<int> Myintlist1 = new MyList<int>();
MyList<int> Myintlist2 = new MyList<int>();
MyList<double> dblist = new MyList<double>();
MyList<SampleCalss> samplelist = new MyList<SampleCalss>();

Console.WriteLine(Myintlist1.Count);
Console.WriteLine(Myintlist2.Count);
Console.WriteLine(dblist.Count);
Console.WriteLine(samplelist.Count);
Console.ReadLine();
}
}
}


...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
budong0000 2009-03-19
  • 打赏
  • 举报
回复
输出为2211。。
budong0000 2009-03-19
  • 打赏
  • 举报
回复
汗。。我自作多情加了个void,原来在这。。谢谢大家。
vbman2003 2009-03-19
  • 打赏
  • 举报
回复
try:



public class MyList<T>
{
private static int objCount = 0;
public int Count
{
get
{
return ++objCount;
}
}
}
READYOUX 2009-03-19
  • 打赏
  • 举报
回复
构造函数虽然没有返回值 但是一样不可以加void的
kingtiy 2009-03-19
  • 打赏
  • 举报
回复
public void Mylist()
{ objCount++; }
这里不是构造函数,不会执行++操作。
public Mylist()//这样才行
{ objCount++; }
ginni215 2009-03-19
  • 打赏
  • 举报
回复
感觉不太可能啊,试试!!
READYOUX 2009-03-19
  • 打赏
  • 举报
回复
不过你这个泛型用的好像不对啊.这么用没有意义啊
lchh0917 2009-03-19
  • 打赏
  • 举报
回复
试了下,构造函数只在调用相同数据类型时累加。。。
cppfaq 2009-03-19
  • 打赏
  • 举报
回复
1. 构造函数有问题:
public MyList() { //拼写,void
objCount++;
}


2. C#2.0中由于引进了泛型,导致静态成员变量的机制出现了一些变化:静态成员变量在相同封闭类间共享,不同的封闭类间不共享。

  这也非常容易理解,因为不同的封闭类虽然有相同的类名称,但由于分别传入了不同的数据类型,他们是完全不同的类,比如:


Stack<int> a = new Stack<int>();
Stack<int> b = new Stack<int>();
Stack<long> c = new Stack<long>();

  类实例a和b是同一类型,他们之间共享静态成员变量,但类实例c却是和a、b完全不同的类型,所以不能和a、b共享静态成员变量。


111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧