如下代码public class A
{
public string GetString()
{
return "";
}
}public class B
{ static readonly object _lock = new object();
private static B _Method;
public static B Method
{
get
{
if (_Method == null)
{
lock (_lock)
{
_Method = new B();
}
}
return _Method;
}
}
public string GetString()
{
return "";
}
}public class C
{
public static string GetString()
{
return "";
}
}
对于如上三个类A B C,都有一个方法GetString,不同的是,他们调用GetString方法的方式
对于A 需要 A a=new A(); a.GetString,也就是先将A实例化后再调用
对于B 可以B.Method.GetString 这样调用
对于C 可以C.GetString()调用于是我有这样的疑问,这三种方式那个更好??
一般的来说一个类里面会有很多的方法、变量等等
那么我的疑问是那种对于系统的影响更小??如内存开销、磁盘读写等等
对于A,如果调用频繁,需要实例化很多A,那么会不会开销很多内存,如果GC回收不及时的话
对于B,是在类里面定义了B类的静态变量,对于这种访问方法,与C的静态方法有什么区别??对于以上方式,目前我都在使用,但是没有发现什么问题,可是如果调用多了,会不会对系统有什么影响?求高手或者深知C#精髓的高手来赐教一下,非常感谢!!!!
{
public string GetString()
{
return "";
}
}public class B
{ static readonly object _lock = new object();
private static B _Method;
public static B Method
{
get
{
if (_Method == null)
{
lock (_lock)
{
_Method = new B();
}
}
return _Method;
}
}
public string GetString()
{
return "";
}
}public class C
{
public static string GetString()
{
return "";
}
}
对于如上三个类A B C,都有一个方法GetString,不同的是,他们调用GetString方法的方式
对于A 需要 A a=new A(); a.GetString,也就是先将A实例化后再调用
对于B 可以B.Method.GetString 这样调用
对于C 可以C.GetString()调用于是我有这样的疑问,这三种方式那个更好??
一般的来说一个类里面会有很多的方法、变量等等
那么我的疑问是那种对于系统的影响更小??如内存开销、磁盘读写等等
对于A,如果调用频繁,需要实例化很多A,那么会不会开销很多内存,如果GC回收不及时的话
对于B,是在类里面定义了B类的静态变量,对于这种访问方法,与C的静态方法有什么区别??对于以上方式,目前我都在使用,但是没有发现什么问题,可是如果调用多了,会不会对系统有什么影响?求高手或者深知C#精髓的高手来赐教一下,非常感谢!!!!
解决方案 »
- 高分求DataGridViewCheckBoxCell状态问题. 100求解!~~急..
- 如何遍历系统托盘区的图标?
- SQLDMO备份数据库到底该怎么用?
- 问一个小问题,一时想不起来了,就是在winform里子窗本刷新父窗体,怎么弄?
- 求如何读写XML文件!
- 为什么要在Bind数据时要先判断sPostBack的值
- datagridview怎么清空数据
- 由一个指定6位数产生的乱序6位数
- 如何让4个pictureBox自动循环跳转
- 我做了一个控件,如何打cab包,怎么把它加到页面中,让他下载
- 如何用ICSharpCode.SharpZipLib.Zip进行分卷压缩
- win7 下socket不能运行
{
string a="234234"; return a;
}方法内部有私有成员a,这样的话我用B.Method.GetString方法后,a成员变量会不会常留内存中??
B.Method.GetString() 当你希望你的类对象只有一个,不希望调用方自己创建对象的时候使用这个。
C.GetString() 这种方式的调用无需实例变量,比如:System.Math.Sqrt(...),他只是方法的几个而已。