构造函数有参数的 静态方法类 怎么设计

leehong0704 2009-04-09 11:29:02
帮忙一下。
...全文
167 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
老潇 2009-04-10
  • 打赏
  • 举报
回复
学习
leehong0704 2009-04-10
  • 打赏
  • 举报
回复
我自己写一个模式实现带参数的类实现单键,大家看有没有更好的方法

    class Singelton
{
/// <summary>
///单键
/// </summary>
private static Singelton instance;

public static Singelton Instance
{
get
{
if (!isInit)
{
throw new Exception("Object not initialized.");
}
else
{
if (instance == null)
{
instance = new Singelton(Singelton.s);
}
}
return instance;
}
}

/// <summary>
/// 指示是否初始化
/// </summary>
private static bool isInit;

public static bool IsInit
{
get { return Singelton.isInit; }
}


/// <summary>
/// 参数
/// </summary>
private static string s;

/// <summary>
/// 私有构造器
/// </summary>
/// <param name="aswFlash"></param>
/// <param name="path"></param>
private Singelton(string s)
{

}


/// <summary>
/// 初始化方法
/// </summary>
/// <param name="aswFlash">flash容器</param>
/// <param name="path">flash路径</param>
public static void Init(string s)
{
Singelton.s = s;
Singelton.isInit = true;
}
}
delphi_new 2009-04-09
  • 打赏
  • 举报
回复
呵呵,
leehong0704 2009-04-09
  • 打赏
  • 举报
回复
谢谢 楼上了 明白了
liang4571231 2009-04-09
  • 打赏
  • 举报
回复
带参数的构造函数作用是为了来初始化某些值而设,在new对象的时候初始化。

静态函数只能调用静态变量

在使用静态方法时先new下调用类的构造函数,这样就赋值了,然后再调用即可

类:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
class Class1
{
public static string show=string.Empty;
public Class1(int i, string m)
{
i = 100;
show = m;
}
public static void ok()
{
MessageBox.Show(show);
}
}
}

窗体中调用:
private void button2_Click(object sender, EventArgs e)
{
Class1 cl = new Class1(100, "nihao");
Class1.ok();
}
leehong0704 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 Roc_Lee 的回复:]
静态的不可能。你试试继承一下试试。
[/Quote]跟继承无关,再怎么继承参数都是来源外部。还有问一个只准本命名空间调用修饰符是什么

春天的气息 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mathieuxiao 的回复:]
把你需要的参数放到配置文件里面,然后在类加载的时候从配置文件把值取出来


C# code
using System.Configuration;

class A
{
static string param = ConfigurationManager.AppSettings["mm"];
public static void AMethod()
{
Console.WriteLine(param);
}
}
[/Quote]

用属性。
Roc_Lee 2009-04-09
  • 打赏
  • 举报
回复
静态的不可能。你试试继承一下试试。
cja03 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 leehong0704 的回复:]
一个代码参数构造函数的类,如何让设计让使用者保持他的唯一性的。
而已不能让 使用者太麻烦了。
[/Quote]

看了几遍,还是没看懂。。。。。。。
leehong0704 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ojekleen 的回复:]
就算按楼上的说法,以属性来传值,这样也达不到形参的效果。。。这样在线程中数据是否不会冲突?
[/Quote]
加上线程锁,外加不优化代码的。
leehong0704 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lianshaohua 的回复:]
可以加另外一个非静态的类,来包装一下这个静态的类,用这个包装类来调用静态类,为其传入必要的参数;
[/Quote]明白你的意思 谢谢。
ojekleen 2009-04-09
  • 打赏
  • 举报
回复
就算按楼上的说法,以属性来传值,这样也达不到形参的效果。。。这样在线程中数据是否不会冲突?
ojekleen 2009-04-09
  • 打赏
  • 举报
回复
是静态方法还是静态类?晕晕的。。。
leehong0704 2009-04-09
  • 打赏
  • 举报
回复
一个代码参数构造函数的类,如何让设计让使用者保持他的唯一性的。
而已不能让 使用者太麻烦了。
mathieuxiao 2009-04-09
  • 打赏
  • 举报
回复
把你需要的参数放到配置文件里面,然后在类加载的时候从配置文件把值取出来


using System.Configuration;

class A
{
static string param = ConfigurationManager.AppSettings["mm"];
public static void AMethod()
{
Console.WriteLine(param);
}
}

ztenv 2009-04-09
  • 打赏
  • 举报
回复
可以加另外一个非静态的类,来包装一下这个静态的类,用这个包装类来调用静态类,为其传入必要的参数;
ztenv 2009-04-09
  • 打赏
  • 举报
回复
静态构建函数不是使用者调用的,是系统在第一次使用这个类(类对象,静态成员等)的时候调用的
leehong0704 2009-04-09
  • 打赏
  • 举报
回复
我知道,这样但是如果使用者个不给属性的话的会引起程序异常。
这样的话的,反而不利于使用这个类的。
ztenv 2009-04-09
  • 打赏
  • 举报
回复
静态的构造函数必须是私有的,无参的,如果非要有参数则用属性来实现吧;

111,126

社区成员

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

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

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