使用C#和Regex我有一个奇怪的情况:
string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
MatchCollection collection = Regex.Matches(substr, @"[\d]*");
Run Code Online (Sandbox Code Playgroud)
在我的世界中,上面会给我一个包含6个结果的'集合'的结果.勉强我的集合包含12个结果,每秒结果是{}(空).
我试过把它重写为:
string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
Regex regex = new Regex(@"[\d]*");
MatchCollection collection = regex.Matches(substr);
Run Code Online (Sandbox Code Playgroud)
但它给了我完全相同的结果.我在这里错过了什么?
我正在使用.Net framework 4.5,C#
创建了以下控制台应用程序后,我有点困惑为什么它似乎同步运行而不是异步运行:
class Program
{
static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
var total = CreateMultipleTasks();
stopwatch.Stop();
Console.WriteLine("Total jobs done: {0} ms", total.Result);
Console.WriteLine("Jobs done in: {0} ms", stopwatch.ElapsedMilliseconds);
}
static async Task<int> CreateMultipleTasks()
{
var task1 = WaitForMeAsync(5000);
var task2 = WaitForMeAsync(3000);
var task3 = WaitForMeAsync(4000);
var val1 = await task1;
var val2 = await task2;
var val3 = await task3;
return val1 + val2 + val3;
}
static Task<int> WaitForMeAsync(int ms)
{
Thread.Sleep(ms);
return Task.FromResult(ms); …Run Code Online (Sandbox Code Playgroud) 在Windows 8 Pro(丹麦语)上安装了Visual Studio 2012 Pro.
问题是所有错误消息现在都是丹麦语!我记得早些时候我应该删除丹麦.net框架语言包,但是不再有这样的包了!(如配置visual studio以英文显示错误消息).
那么我现在如何再次收到英文错误消息呢?
问题:制作了一个小型邮件程序,它在我的开发者电脑上完美运行,但投入生产后却失败了.
protected void Page_Load(object sender, EventArgs e)
{
string smtpHost = ConfigurationManager.AppSettings["SmtpAddress"];
MailMessage mail = new MailMessage();
mail.From = new MailAddress(ConfigurationManager.AppSettings["FromMailAddress"]);
mail.Sender = new MailAddress(ConfigurationManager.AppSettings["FromMailAddress"]);
mail.To.Add(new MailAddress("zzz@xxx.yy"));
mail.Subject = "Test mail";
mail.Body = string.Format("Is this mail sent via {0} ?", smtpHost);
lblMsg2.Text = string.Format("SmtpHost: {0}", smtpHost); ;
SmtpClient client = new SmtpClient(smtpHost);
try
{
client.Send(mail);
}
catch (Exception exception)
{
lblMsg3.Text = exception.Message.ToString();
lblMsg4.Text = exception.InnerException.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我确实得到了正确的邮件地址和生产服务器上的所有内容,但我的电子邮件收件箱中没有任何内容:-(.我没有收到任何例外.
我尝试在同一台服务器上使用telnet,从那里我可以发送邮件.
我已经尝试安装WireShark,它正在查看服务器上的网卡,当使用telnet时,我确实得到了我怀疑的响应,但是从我的程序中我没有收到任何东西.
编辑2012-03-12 @ 09:46丹麦时间
现在已经更新了代码,看起来像这样
protected void Page_Load(object sender, EventArgs …Run Code Online (Sandbox Code Playgroud) 我做了一个通用的界面,如:
public interface IDatabaseElement<T>
{
IList<T> GetAll();
T Get(id);
void Save(T element);
void Delete(int id);
}
Run Code Online (Sandbox Code Playgroud)
如果我有两个元素(人和商店)只使用上述方法,那么什么是最佳实践呢?
答:为每个元素创建一个新界面,如:
public interface IPerson : IDatabaseElement<Person> { }
public interface IStore : IDatabaseElement<Store> { }
Run Code Online (Sandbox Code Playgroud)
然后我的课程如下:
public class Person : IPerson { .... }
public class Store : IStore { .... }
Run Code Online (Sandbox Code Playgroud)
当实例化变量时:
IPerson person = new Person();
IStore store = new Store();
Run Code Online (Sandbox Code Playgroud)
或者B:直接使用通用接口,如:
public class Person : IDatabaseElement<Person> { .... }
public class Store : IDatabaseElement<Store> { .... }
Run Code Online (Sandbox Code Playgroud)
当实现变量时:
IDatabaseElement<Person> person …Run Code Online (Sandbox Code Playgroud)