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. C如何获取文件夹下所有文件

    http://baike.baidu.com/view/1186290.htm?fr=aladdin 使用io.h中的_findfirst,_findnext,_findclose,_finddata ...

  2. 文件和目录之stat、fstat和lstat函数

    #include <sys/stat.h> int stat( const char *restrict pathname, struct stat *restrict buf ); in ...

  3. 再探ASP.NET 5(转载)

    就在最近一段时间,微软又有大动作了,在IDE方面除了给我们发布了Viausl Studio 2013 社区版还发布了全新的Visual Studio 2015 Preview. Visual Stud ...

  4. com.service.impl

    package com.service.impl; import java.util.ArrayList; import java.util.LinkedHashMap; import java.ut ...

  5. iOS 符号表恢复 & 逆向支付宝

    推荐序 本文介绍了恢复符号表的技巧,并且利用该技巧实现了在 Xcode 中对目标程序下符号断点调试,该技巧可以显著地减少逆向分析时间.在文章的最后,作者以支付宝为例,展示出通过在 UIAlertVie ...

  6. nc命令用法举例

    什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server ...

  7. Leetcode 104. Maximum Depth of Binary Tree(二叉树的最大深度)

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  8. 去除ActionBar的方法

    今天做一个播放器项目,由于要去除ActionBar,纠结好久,原来这么简单 记录一下 只需要修改AndroidManifest.xml文件中的主题即可 <application android: ...

  9. Singleton(单例模式)

    类的实例化次数只能一次. 例如:小王和小李通过门铃进行沟通,首先判断小王家是否有门,若没有建立门,若有门直接返回门. var xiaowang = (function(argument){ var m ...

  10. Visual Studio.NET、asp.net和C#间的关系是怎样的?

    asp.net是一种技术,要实现这种技术,就得有底层的实现技术编程语言,这个语言就是C#,(只是绝大多数首选C#),要想用C#实现asp.net技术,就得有编程的工具软件,这个软件我一直用visual ...