[C#]C#实现短信验证码接口示??/a> [C#]

来源:本网整理

可以用下面这种更简单的方式解决:string vowels = "a e i o u&

代码出处:阅??br/>网站地址:http://www.jinloushiji.cn scrolltotop.offset(100,120); scrolltotop.init();

[1].[代码] [C#]代码实现短信验证码接口示?? 跳至 [1]

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Net; using System.IO; using System.IO.Compression; using System.Text.RegularExpressions; using System.Security.Cryptography; using System.Web; public class Test { private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; //总是接受 } static void Main(string[] args) { DateTime dt = DateTime.Now; string mttime = dt.ToString("yyyyMMddHHmmss"); string pwd1 = "*************"+mttime; string pwd = GetMD5(pwd1) string content = "【阅信】验证码888888,打死也不能告诉别人哦??; string url = "http://183.203.28.226:9000/HttpSmsMt"; Encoding encoding = Encoding.GetEncoding("utf-8"); IDictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("name", "****"); parameters.Add("pwd", pwd); parameters.Add("content",content); parameters.Add("phone","13381272353"); parameters.Add("subid",""); parameters.Add("mttime", mttime); HttpWebResponse response = CreatePostHttpResponse(url,parameters,encoding); //打印返回?? Stream stream = response.GetResponseStream(); //获取响应的字符串?? StreamReader sr = new StreamReader(stream); //创建一个stream读取?? string html = sr.ReadToEnd(); //从头读到尾,放到字符串html Console.WriteLine(html); } public static string GetMD5(string myString) { MD5 md5 = new MD5CryptoServiceProvider(); // byte[] fromData = System.Web.HttpUtility.UrlEncode.GetBytes(myString); byte[] fromData = Encoding.Default.GetBytes(myString); byte[] targetData = md5.ComputeHash(fromData); string byte2String = null; for(int i=0;i<targetData.Length;i++) { byte2String+= targetData[i].ToString("x"); } return byte2String; } public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters,Encoding charset) { HttpWebRequest request = null; //HTTPSQ请求 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.UserAgent = DefaultUserAgent; //如果需要POST数据 if (!(parameters == null || parameters.Count == 0)) { StringBuilder buffer = new StringBuilder(); int i = 0; foreach (string key in parameters.Keys) { if (i > 0) { buffer.AppendFormat("&{0}={1}", key, parameters[key]); } else { buffer.AppendFormat("{0}={1}", key, parameters[key]); } i++; } byte[] data = charset.GetBytes(buffer.ToString()); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } } return request.GetResponse() as HttpWebResponse; } } SyntaxHighlighter.autoloader( 'applescript /js/sh309/scripts/shBrushAppleScript.js?t=1451961936000', 'actionscript3 as3 /js/sh309/scripts/shBrushAS3.js?t=1451961936000', 'bash shell /js/sh309/scripts/shBrushBash.js?t=1451961936000', 'coldfusion cf /js/sh309/scripts/shBrushColdFusion.js?t=1451961936000', 'cpp c /js/sh309/scripts/shBrushCpp.js?t=1451961936000', 'obj-c objc /js/sh309/scripts/shBrushObjC.js?t=1451961936000', 'c# c-sharp csharp /js/sh309/scripts/shBrushCSharp.js?t=1451961936000', 'css /js/sh309/scripts/shBrushCss.js?t=1451961936000', 'delphi pascal /js/sh309/scripts/shBrushDelphi.js?t=1451961936000', 'diff patch pas /js/sh309/scripts/shBrushDiff.js?t=1451961936000', 'erl erlang /js/sh309/scripts/shBrushErlang.js?t=1451961936000', 'groovy /js/sh309/scripts/shBrushGroovy.js?t=1451961936000', 'haxe hx /js/sh309/scripts/shBrushHaxe.js?t=1451961936000', 'java /js/sh309/scripts/shBrushJava.js?t=1451961936000', 'jfx javafx /js/sh309/scripts/shBrushJavaFX.js?t=1451961936000', 'js jscript javascript /js/sh309/scripts/shBrushJScript.js?t=1451961936000', 'perl pl /js/sh309/scripts/shBrushPerl.js?t=1451961936000', 'php /js/sh309/scripts/shBrushPhp.js?t=1451961936000', 'text plain /js/sh309/scripts/shBrushPlain.js?t=1451961936000', 'py python /js/sh309/scripts/shBrushPython.js?t=1451961936000', 'ruby rails ror rb /js/sh309/scripts/shBrushRuby.js?t=1451961936000', 'scala /js/sh309/scripts/shBrushScala.js?t=1451961936000', 'sql /js/sh309/scripts/shBrushSql.js?t=1451961936000', 'vb vbnet /js/sh309/scripts/shBrushVb.js?t=1451961936000', 'xml xhtml xslt html /js/sh309/scripts/shBrushXml.js?t=1451961936000' ); SyntaxHighlighter.all();

 1、公有方法实现接口方法  尽管C#在定义接口时不用指明接口方法的访问控制方式,但默认接口方法

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

C#接口中只能包含方法签名,那方法的具体实现应该写在哪?

1、C#接口的作用 :

C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认识到接口的作用的时候就觉得用接口是多此一举,当然你这样想那是绝对绝对错误的,比尔盖茨的微软请的员工都是比盖茨还聪明的人,他们的C#能添这样的多足吗?!关于接口的作用,网上有一位就真的深入浅出给我们做了很好理解的分析。

我们定义一个接口

C#

1

2

3

4

public interface IBark

{

void Bark();

}

再定义一个类,继承于IBark,并且必需实现其中的Bark()方法

C#

1

2

3

4

5

6

7

8

9

public class Dog:IBark

{

public Dog()

{}

public void Bark()

{

Consol.write("汪汪");

}

}

然后,声明Dog的一个实例,并调用Bark()方法

C#

1

2

Dog 旺财=new Dog();

旺财.Bark();

试想一样,若是想调用Bark()方法,只需要在Dog()中声明这样的一个方法不就行了吗,干什么还要用接口呢.因为接口中并没有Bark()具体实现.真的实现还是要在Dog()中.那么使用接口不是多此一举吗?

还有人是这样说的:从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束.还拿上面的例子来说.所有继承了IBark接口的类中必需实现Bark()方法.那么从用户(使用类的用户)的角度来说,如果他知道了某个类是继承于IBark接口,那么他就可以放心大胆的调用Bark()方法,而不用管Bark()方法具体是如何实现的.比如,我们另外写了一个类.

C#

1

2

3

4

5

6

7

8

9

public class Cat:IBark

{

public Cat()

{}

public void Bark()

{

Consol.write("喵喵");

}

}

当用户用到Cat类或是Dog类的时候,知道他们继承于IBark,那么不用管类里的具体实现,而就可以直接调用Bark()方法,因为这两个类中肯定有关于Bark()方法的具体实现.

如果我们从设计的角度来看.一个项目中用若干个类需要去编写,由于这些类比较复杂,工作量比较大,这样每个类就需要占用一个工作人员进行编写.比如A程序员去定Dog类,B程序员去写Cat类.这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于”叫”的方法.这就要对他们进行一种约束.让他们都继承于IBark接口,目的是方便统一管理.另一个是方便调用.当然了,不使用接口一样可以达到目的.只不过这样的话,这种约束就不那么明显,如果这样类还有Duck类等等,比较多的时候难免有人会漏掉这样方法.所以说还是通过接口更可靠一些,约束力更强一些.

2、C#中接口的深入浅出:

通过学习对C#中接口的作用有了更进一步的理解,拿出来跟大家分享一下,有说的不对的地方请大家指教。

假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程序员,用clsVBProgramer这个类表示;Delphi程序员指的是用Delphi写程序的程序员,用clsDelphiProgramer这个类来表示。每个类都有一个WriteCode()方法。定义如下:

1

2

3

4

5

6

7

8

9

class clsVBProgramer()

{

....

WriteCode()

{

//用VB语言写代码;

}

....

}

1

2

3

4

5

6

7

8

9

class clsDelphiProgramer()

{

....

WriteCode()

{

//用Delphi语言写代码;

}

....

}

现在公司来了一个项目,要求派某个程序员写一个程序。

1

2

3

4

5

6

7

8

9

10

11

12

13

class clsProject()

{

....

WritePrograme(clsVBProgramer programer)//用VB写代码

{

programer.WriteCode();

}

WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码

{

programer.WriteCode();

}

......

}

在主程序中我们可以这样写:

1

2

3

4

5

6

7

8

9

10

main()

{

clsProject proj=new clsProject;

//如果需要用VB写代码

clsVBProgramer programer1=new clsVBProgramer;

proj.WritePrograme(programer1);

//如果需要用Delphi写代码

clsDelphiProgramer programer2=new clsDelphiProgramer;

proj.WritePrograme(programer2);

}

但是如果这时公司又来了一个C#程序员,我们怎么改这段程序,使它能够实现用C#写程序的功能呢?我们需要增加一个新类clsCSharpProgramer,同时在此clsProject这个类中要再次重载WritePrograme(clsCSharpProgramer programer)方法。这下麻烦多了。如果还有C程序员,C++程序员,JAVA程序员呢。麻烦大了!

但是如果改用接口,就完全不一样了:

首先声明一个程序员接口:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

interface IProgramer()

{

WriteCode();

}

然后声明两个类,并实现IProgramer接口:

class clsVBProgramer():IProgramer

{

....

WriteCode()

{

//用VB语言写代码;

}

....

}

1

2

3

4

5

6

7

8

9

class clsDelphiProgramer():IProgramer

{

....

WriteCode()

{

//用Delphi语言写代码;

}

....

}

对clsProject这个类进行一下修改:

C#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

class clsProject()

{

....

WritePrograme(IProgramer programer)

{

programer.WriteCode();//写代码

}

......

}

main()

{

clsProject proj=new clsProject;

IProgramer programer;

//如果需要用VB写代码

programer=new clsVBProgramer;

proj.WritePrograme(programer);

//如果需要用Delphi写代码

programer=new clsDelphiProgramer;

proj.WritePrograme(programer);

}

如果再有C#,C,C++,JAVA这样的程序员添加进来的话,我们只需把它们相关的类加进来,然后在main()中稍做修改就OK了。扩充性特别好!

另外我们如果把clsProject这个类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是很方便,很强大!

C# 利用接口实现圆的周长和面积?

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int i;

double radius;

double result;

Console.WriteLine("要计算圆的周长还是面积,计算周长请输入0,计算面积请输入1");

i = int.Parse(Console.ReadLine());

Console.WriteLine("请输入要计算的圆的半径");

radius = int.Parse(Console.ReadLine());

Circle cl = Factory.CreatCircle(i, radius);

result = cl.Compute();//“一个人可以做不同的事”,智能化

Console.WriteLine("计算结果是:" + result);

Console.ReadLine();

}

interface Circle

{

double Compute();

}//接口只须有个计算(不管是面积还是周长)的方法声明就行了

class Area:Circle//计算面积的类继承接口

{

private double radius;

public Area(double r)

{

radius = r;

}

public double Compute()

{

return 3.14 * radius * radius;

}//实现真正的计算

}

class Round : Circle//与计算面积的类一样继承接口

{

private double radius;

public Round(double r)

{

this.radius = r;

}

public double Compute()

{

return 3.14 * 2 * radius;

}//实现真正的计算

}

class Factory//简单工厂

{

public static Circle CreatCircle(int i, double radius)

{

Circle cl = null;

switch (i)

{

case 0:

cl = new Round(radius);

//此处是不是会让你怀疑为什么可以“Circle cl = new Round()”呢?见注解

break;

case 1:

cl = new Area(radius);

break;

}

return cl;

}

}

}

}

/*

以上代码直接复制粘贴可运行看效果,但或许你会有些不太明白这能说明什么,且看Main()里的两条语句,Circle cl = Factory.CreatCircle(i, radius);

result = cl.Compute();

这里创建了一个接口Circle的实例cl,接着调用接口的Compute()方法得到结果。有没有发现,在Main()里我们只要知道用户想要什么结果,而无须关心自己要是计算面积或是周长只须一个cl.Compute()却能得到结果,关心是计算面积还是周长的事已经交到Factory(工厂)类里了,而事实上工厂也不关心怎么计算面积或是周长,关心它们的事已经被交到继承了Circle接口的Area跟Round两个类里去了。

这样做有什么好处呢,假设圆还有一个属性叫半周长(HalfRound),我们若要计算它,便只须再加一个类class HalfRound:CirCle{}来实现半周长的计算即可,其它地方无须再改(当然,我们要让用户知道我们已经可以计算圆的半周长了)。

是不是感觉CirCle已是无所不能的了,确实可以这么说,只要是求圆的属性,我们都可以让它来做。这正是接口的职责所在,它就是要让我们看上去一个类可以智能地做多件事一样。

而如果不用接口,而用C的面向过程编程的话,楼主可以试一下,对比两种方法所写的代码的可复用与可维护,相信你会有所发现的。

除了这点,通过以上的Factory还可以把各类的职责细分,减小类与类的关联,也就是面向对象一大要求——低偶合。

至于Circle cl = new Round()为什么可行,这就是C#的语法了,用接口声明的一个对象可以用继承了它的子类来实例化,记着就行了,这个真的没有为什么。。。

*/

a+=b ,i++,++i 如何用C#解释

a+=b表示:把a与b的和赋值给a

i++和++i都表示:i自加1

a+=b等价于a=a+b;表示a的值加b;

i++和++i最终都是i自加1,但是也有区别:

i++ :先引用后增加

++i :先增加后引用

例如:i=1;

x=i++;( x=1,i=2;)

y=++i; (y=2,i=2;)

为什么C#中提供的封装接口可以直接调用方法~~~

有ICompare接口?我查了MSDN只有两种可能的接口:

System.Collections.IComparer

System.IComparable

不管是哪种接口,对于楼主问题,很容易解释。你直接调用接口方法肯定不行,例如:

IComparable myInterfaceTest;

myInterfaceTest.Compare(...);

以上编译就不会通过。但是,如果有个类继承于该接口(myInheritedClass:IComparable),那么该类的实例就可以调用接口的方法,实例如下:

IComparable myInterfaceTest = new myInheritedClass();

myInterfaceTest.Compare(...);

希望能对楼主有用。

C#中虚数i的如何定义?

1)如果你的控制台程序使用.net 4.0,可以直接使用复数数据类型。

Complex类型包含在命名空间: System.Numerics,需要添加对程序集 System.Numerics的引用。

2)如果你的程序使用.net 4.0之前的版本,那就需要你自己实现复数的定义。因为这些版本的.net中没有提供复数类或复数结构。不过,这也不难,网上有很多例子供你参考。

参考:

Complex 结构

http://msdn.microsoft.com/zh-cn/library/system.numerics.complex%28v=vs.100%29.aspx追问我只是想知道虚数单位i怎么表示出来。。。我之前用的math.sqrt(-1),但是这样表示是NaN,没有意义。。追答

在C#中,复数单位i是“隐含”的。见以下代码:

using System.Numerics;

//复数 z=1+1i,注意!复数单位i并没有出现在代码中

Complex z = new Complex(1, 1); 

//z的模

 double r = z.Magnitude;  //r=1.4142135623730951

 //z的相角

double alpha = z.Phase;  //alpha=0.78539816339744828(弧度)

//再定义一个复数z1=3+5i

Complex z1 = new Complex(3, 5);

//复数求和 y=z+z1;

Complex y = z+z1;  //这里也没有出现 i

double imag = y.Imaginary;  //y的虚部imag=6.0

double real = y.Real;  //y的实部real=4.0

从上面的代码可以看出,在C#程序中对复数的运算,根本不用考虑复数单位i。换句话说,i只是一个数学范畴的概念,在程序中不用(也不可能)表现出来。

  • 本文相关:
  • [Python]基于python的短信接口调用代码示例模??/a> [Python]
  • [JavaScript]火狐下鼠标滚轮事??/a> [JavaScript]
  • [XML]简单计算器源码
  • [Java]StringTokenizer分解字符串实??/a> [Java]
  • [Objective-C]对AFNetworking 3.x 与YYCache二次封装,一句话??..
  • [Java]struts2中实现实通过超链接切换语言. ...
  • [JavaScript]jQuery复合事件
  • [JavaScript]jQuery绑定多个事件
  • [JavaScript]jQuery绑定单个事件
  • [JavaScript]jQuery登录框特??/a> [JavaScript]
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved