今天看到一个很奇葩的写法,抽象类内部全是静态方法

abcbuzhiming 2011-08-16 05:48:26

public abstract class DbHelperOleDb
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = PubConstant.ConnectionString;
public DbHelperOleDb()
{
}


#region 公用方法

public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return int.Parse(obj.ToString());
}
}
public static bool Exists(string strSql)
{
object obj = GetSingle(strSql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
public static bool Exists(string strSql, params OleDbParameter[] cmdParms)
{
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}



我表示非常不解,要做全局方法的话用静态方法是没错,但是为什么要塞入到一个抽象类里,难道写这代码的人打算从某处继承这个抽象类(从源代码的其它部分看这个类没有被继承过),可全是静态方法的抽象类有什么好继承的呢,一般造就全局方法的方式不是静态类+静态方法吗?我是头一次见到抽象类+静态方法的组合,放狗没搜出这样做的理由来,感觉特别奇葩,这样做有啥特别意义?
...全文
551 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
至尊贱客 2011-08-17
  • 打赏
  • 举报
回复
又没什么奇怪的。。。。纯属个人风格吧
ycproc 2011-08-16
  • 打赏
  • 举报
回复
看不到什么神奇之处
hangang7403 2011-08-16
  • 打赏
  • 举报
回复
应该是设计上的个人风格,也可以用static
ay_guobo 2011-08-16
  • 打赏
  • 举报
回复
学习了~什么时候也尝试一下
csproj 2011-08-16
  • 打赏
  • 举报
回复
刚试了
abstract sealed
static sealed 都不能一起用。

本来静态类就不能继承 用sealed 多此一举了
csproj 2011-08-16
  • 打赏
  • 举报
回复
用了sealed 也可以用static关键字

不知道sealed 和abstract 可不可以一起用,一会试下
csproj 2011-08-16
  • 打赏
  • 举报
回复
防止new ,
用static 和抽象类都可以


用sealed和这里的要求就不一样了吧
sealed只是不能继承,一样可以new
Just4life 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vrhero 的回复:]

引用 4 楼 icedmilk 的回复:
我感觉他的意图是不希望使用者创建DbHelperOleDb的实例
abstract可以实现他的意图

不过更标准的做法是staic class关键词吧

工具类没有什么标准,我更喜欢用sealed...纯属个人习惯,没有优劣之分...
[/Quote]

支持使用sealed
vrhero 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 icedmilk 的回复:]
我感觉他的意图是不希望使用者创建DbHelperOleDb的实例
abstract可以实现他的意图

不过更标准的做法是staic class关键词吧
[/Quote]
工具类没有什么标准,我更喜欢用sealed...纯属个人习惯,没有优劣之分...
Icedmilk 2011-08-16
  • 打赏
  • 举报
回复
我感觉他的意图是不希望使用者创建DbHelperOleDb的实例
abstract可以实现他的意图

不过更标准的做法是staic class关键词吧
vrhero 2011-08-16
  • 打赏
  • 举报
回复
没什么特别...和一般的静态工具类一样,设计时就没打算让人继承...很久以前微软的示例代码里都有这种用法...
catchdream 2011-08-16
  • 打赏
  • 举报
回复
可能是为了避免有人实现这个静态类得实例调用方法,不过这好像也没啥特殊用途。猜的。。
stonespace 2011-08-16
  • 打赏
  • 举报
回复
静态方法可能是提供给派生类调用吧,

111,101

社区成员

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

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

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