1.结构

一个类 public class GetMethods{...}

     类中的变量:                                                                 

int codeCount=4 定义获取随机字符串的位数,默认4
int rep = 0 方法体中一个自增的变量

     类中的方法,三种获取方式:

string GetNum()

获得数字组合的字符串
string GetStr() 获得字母组合的字符串
string GetStrAndNum() 获得数字和字母混合组合的字符串

第二个类 public class GetString{...}

     类中的变量:                                                 

enum Code{ NUM,STR,StrAndNum } 定义枚举作为参数,选择获取方式
   

     类中的方法:

static string GetRandomCode(Code codeType,int codeCount) (重载)获取字符串总方法,参数为获取方式与组合位数
static string GetRandomCode(Code codeType) (重载)获取字符串总方法,参数为获取方式,默认4位
string ActionInTable(Code code)  表驱动的方法体,参数为获取方式
2.代码

1)一个类 public class GetMethods{...}

      注:该类中的方法来自:http://www.cnblogs.com/xiachufeng/archive/2012/04/01/2429065.html

     public class GetMethods
{
public int codeCount=;
static int rep = ; /// <summary>
/// 产生随机codeCount位数字组合代码
/// </summary>
/// <param name="codeCount">组合位数</param>
public string GetNum()
{
string str = string.Empty;
long num2 = DateTime.Now.Ticks + rep;
rep++;
Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
for (int i = ; i < codeCount; i++)
{
int num = random.Next();
str = str + ((char)(0x30 + ((ushort)(num % )))).ToString();
}
return str;
} /// <summary>
/// 产生随机codeCount位字母组合代码
/// </summary>
/// <param name="codeCount">组合位数</param>
public string GetStr()
{
string str = string.Empty;
long num2 = DateTime.Now.Ticks + rep;
rep++;
Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
for (int i = ; i < codeCount; i++)
{
int num = random.Next();
str = str + ((char)(0x41 + ((ushort)(num % 0x1a)))).ToString();
}
return str;
} /// <summary>
/// 产生随机codeCount位数字与字母组合代码
/// </summary>
/// <param name="codeCount">组合位数</param>
public string GetStrAndNum()
{
string str = string.Empty;
long num2 = DateTime.Now.Ticks + rep;
rep++;
Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
for (int i = ; i < codeCount; i++)
{
char ch;
int num = random.Next();
if ((num % ) == )
{
ch = (char)(0x30 + ((ushort)(num % )));
}
else
{
ch = (char)(0x41 + ((ushort)(num % 0x1a)));
}
str = str + ch.ToString();
}
return str;
}
}

 2)第二个类 public class GetString{...}  

     public class GetString
{
public enum Code{ NUM,STR,StrAndNum } public static string GetRandomCode(Code codeType,int codeCount)
{
GetMethods getMethod=new GetMethods();
getMethod.codeCount = codeCount;
var addMethod = typeof(GetMethods).GetMethod(ActionInTable(codeType));
return (string)addMethod.Invoke(getMethod,null);
} //重载,默认4位
public static string GetRandomCode(Code codeType)
{
GetMethods getMethod=new GetMethods();
var addMethod = typeof(GetMethods).GetMethod(ActionInTable(codeType));
return (string)addMethod.Invoke(getMethod,null);
} static string ActionInTable(Code code)
{
string[] methods = { "GetNum", "GetStr", "GetStrAndNum" };
return methods[(int)code];
}
}
3.应用

将该两个类封装到类库中,即可方便使用,我将他们封装到了StringControl.dll中,将其添加到引用中,引用命名空间using StringControl;

using StringControl;//引用命名空间
///代码省略
//.....................
///代码省略
//使用方法 string RandomKey = GetString.GetRandomCode(GetString.Code.StrAndNum,);
string RandomKey1 = GetString.GetRandomCode(GetString.Code.StrAndNum); //4位
///代码省略
//.....................
///代码省略
4.下载

地址:http://files.cnblogs.com/smlusm/StringControl.zip

5.总结

利用该方法,有时可以避免过长的if与switch语句,确实方便,有想法的同学,还望不吝赐教!

C#表驱动法+一点反射实现“得到指定位数随机不重复字符串”三种方式的封装的更多相关文章

  1. js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式

    js replace 全局替换   js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...

  2. PHP连接数据库、创建数据库、创建表的三种方式

    这篇博客主要介绍了三种方式来连接MySQL数据库以及创建数据库.创建表.(代码是我在原来的基础上改的) MySQLi - 面向对象 MySQLi - 面向过程 PDO MySQLi 面向对象 < ...

  3. 多表连接的三种方式 HASH MERGE NESTED

    多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP------------------------------------------------------20 ...

  4. 多表连接的三种方式详解 hash join、merge join、 nested loop

    在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式.多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join.具体适用哪 ...

  5. Python - Django - ORM 多对多表结构的三种方式

    多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...

  6. 示例讲解PostgreSQL表分区的三种方式

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案.一般建议 ...

  7. Java反射机制(创建Class对象的三种方式)

    1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称:   2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...

  8. [转]javascript指定事件处理程序包括三种方式:

    javascript指定事件处理程序包括三种方式: (1):DOM0级事件处理程序 如: 代码如下: var btn=document.getElementById("mybtn" ...

  9. Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...

随机推荐

  1. mysql使用心得

    SET FOREIGN_KEY_CHECKS=0; -- ------------------------------ Table structure for `staff`-- ---------- ...

  2. Controllers

    Controllers Controllers are the bread and butter of the framework they control when a model is used ...

  3. Java HashMap 如何正确遍历并删除元素

    (一)HashMap的遍历 HashMap的遍历主要有两种方式: 第一种采用的是foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况. HashMap<K ...

  4. Linux 学习笔记 基本的bash shell命令

    Linux 文件系统 Linux讲文件存储在单个目录结构(虚拟目录)中,虚拟目录包含了安装在PC上的所有存储设备的文件路径. Linux虚拟目录中比较复杂的部分是它如何来协调管理各个存储设备.Linu ...

  5. Debug 之 The state information is invalid for this page and might be corrupted

    1.问题描述: 网站部署之后,排序或者搜索之后报错:The state information is invalid for this page and might be corrupted 2.问题 ...

  6. Maven学习小结(三 基本概念)

    1.Maven POM POM(Project Object Model)项目对象模型,是用Maven来管理项目里的一个叫做pom.xml的文件.所有的项目配置信息都被定义在这个文件中, 通过这个文件 ...

  7. Android之网络编程利用PHP操作MySql插入数据(四)

    因为最近在更新我的项目,就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下,所以最近Android网络编程方面的博文会比较多一些,我尽量以最简单的方法给大家分享,让大家明白易懂.如果有什么 ...

  8. swift项目中嵌入oc

    参考资料 需要注意的是  与oc包含swift不同的是  swift包含oc需要在桥接文件中包含要使用的oc的头文件 demo:swiftPlayOc(提取码:37c6)

  9. CentOS7安装和配置FTP

    1. 安装vsftpd #安装vsftpd yum install -y vsftpd #设置开机启动 systemctl enable vsftpd.service # 重启 service vsf ...

  10. javascript优化工具 Doloto

    Doloto是“Download Time Optimizer”的简写.官方页面上说它对于大型复杂的AJAX应用尤其的有用,因为这些应用包含了大量的 JavaScript 代码.简单的说,它的工作原理 ...