不要问我是怎么到达那里的,但是我正在玩一些屏蔽,循环展开等.无论如何,出于兴趣,我正在考虑如何实现indexof方法,长话短说,所有掩盖等除此之外,这个天真的实现:
public static unsafe int IndexOf16(string s, int startIndex, char c) {
if (startIndex < 0 || startIndex >= s.Length) throw new ArgumentOutOfRangeException("startIndex");
fixed (char* cs = s) {
for (int i = startIndex; i < s.Length; i++) {
if ((cs[i]) == c) return i;
}
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
比string.IndexOf(char)快.我写了一些简单的测试,它似乎完全匹配输出.我的机器的一些样品输出数字(当然会有所不同,但趋势很明显):
short haystack 500k runs
1741 ms for IndexOf16
2737 ms for IndexOf32
2963 ms for IndexOf64
2337 ms for string.IndexOf <-- buildin
longer haystack:
2888 ms for IndexOf16
3028 …Run Code Online (Sandbox Code Playgroud) 女士和男士们,
我最近尝试过这个实验:
static class TryParseExtensions
{
public delegate bool TryParseMethod<T>(string s, out T maybeValue);
public static T? OrNull<T>(this TryParseMethod<T> tryParser, string s) where T:struct
{
T result;
return tryParser(s, out result) ? (T?)result : null;
}
}
// compiler error "'int.TryParse(string, out int)' is a 'method', which is not valid in the given context"
var result = int.TryParse.OrNull("1"); // int.TryParse.OrNull<int>("1"); doesnt work either
// compiler error: type cannot be infered....why?
var result2 = TryParseExtensions.OrNull(int.TryParse, "2");
// works as expected
var …Run Code Online (Sandbox Code Playgroud) 我最近遇到的情况是,我需要执行一个分组操作,缓慢产生 Linq 查询。
现在,groupBy 失去了它的惰性,这意味着您必须等待整个序列完成,直到返回任何组。对我来说,从逻辑上讲这似乎不是最好的解决方案,因为一旦第一次遇到一个组就可以返回。
我编写了以下代码,它似乎工作得很好,并且正在寻找陷阱和一般改进,以及对概念本身的想法(例如,可以/应该 groupBy 方法尽快返回组)。
public static IEnumerable<KeyValuePair<R, IEnumerable<T>>> GroupByLazy<T, R>(this IEnumerable<T> source, Func<T, R> keySelector)
{
var dic = new Dictionary<R, BlockingCollection<T>>();
foreach (var item in source)
{
var Key = keySelector(item);
BlockingCollection<T> i;
if (!dic.TryGetValue(Key, out i))
{
i = new BlockingCollection<T>();
i.Add(item);
dic.Add(Key, i);
yield return new KeyValuePair<R, IEnumerable<T>>(Key, i);
}
else i.TryAdd(item);
}
// mark all the groups as completed so that enumerations of group-items can finish
foreach (var groupedValues in dic.Values)
groupedValues.CompleteAdding(); …Run Code Online (Sandbox Code Playgroud) 你如何发送电子邮件到雅虎帐户,我只能发送到Gmail?我想知道为什么因为我的ISP不提供POP3或SMTP地址.我对我的一切都一无所知,如果你能告诉我一个调查的方法,那么我将非常高兴.
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("pevus55@gmail.com", "mypassword");
smtp.EnableSsl = true;
MailAddress mailFrom = new MailAddress("parris797877@yahoo.com");
MailAddress mailTo = new MailAddress("pevus55@gmail.com");
MailMessage msg = new MailMessage(mailFrom, mailTo);
msg.Subject = "Test";
msg.Body = textBox1.Text;
smtp.Send(msg);
Run Code Online (Sandbox Code Playgroud)