如何在C#中获取从"A:"到"Z:"的字符串列表?像这样的东西:
List<string> list = new List<string>();
for (int i = 0; i < 26; i++)
{
list.Add(string.Format("{0}:", Convert.ToChar('A' + i));
}
Run Code Online (Sandbox Code Playgroud)
抱歉,我现在没有可用于验证的VS来验证.顺便说一句,是否有网站可用于交互式测试代码片段?
我有一个字符串,该怎么做
你会怎么用C#3.0做到这一点?
首先让我介绍没有依赖注入的实现(这将打破依赖反转原则):
public class MyValidator
{
private readonly IChecksumGenerator _checksumGenerator;
public MyValidator()
{
_checksumGenerator = new MyChecksumGenerator();
}
...
}
Run Code Online (Sandbox Code Playgroud)
为了使此代码可测试,请注入IChecksumGenerator:
public class MyValidator
{
private readonly IChecksumGenerator _checksumGenerator;
public MyValidator(IChecksumGenerator checksumGenerator)
{
_checksumGenerator = checksumGenerator;
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在,如果需要,我们可以轻松地测试MyValidator和stub checksumGenerator。但是MyValidator实现在算法上与特定的IChecksumGenerator实现耦合(它不能与任何其他实现一起使用)。因此出现一些问题:
我想到的最好的解决方案是:
public class MyValidator
{
private readonly IChecksumGenerator _checksumGenerator;
public MyValidator()
{
_checksumGenerator = new MyChecksumGenerator;
}
internal MyValidator(IChecksumValidator checksumValidator)
{
_checksumValidator = checksumValidator;
}
...
}
Run Code Online (Sandbox Code Playgroud)
在这里,我介绍了用于测试目的的特殊构造函数(因此我可以在测试中对IChecksumValidator进行存根),但是公共构造函数将创建与之耦合的实现(因此封装不会中断)。创建一些用于测试目的的代码有点难看,但是看起来在这种情况下是有意义的。
您将如何解决这个问题?
我需要替换从我网站上的每个页面发送的一些数据,我认为使用Global.asax进行处理.这是我到目前为止尝试过的:
void Application_PreSendRequestContent(object sender, EventArgs e)
{
System.IO.StreamReader sr = new System.IO.StreamReader(Response.OutputStream);
String output = sr.ReadToEnd();
Response.ClearContent();
Response.Write("Testing..");
}
Run Code Online (Sandbox Code Playgroud)
但这给了我一个ArgumentException.我究竟做错了什么?有没有更好的方法来做到这一点?
谢谢
我想创建一个简单的选项卡式界面应用程序.我之前在WPF中使用每个选项卡中的usercontrol完成了它,并且我与主要表单进行通信,搜索父元素(表单或选项卡控件)
我怎么能在WinForms中做同样的事情?我需要在每个标签内放置哪个元素?
谢谢.
我有一个长字符串,我需要解析成一个长度不超过40个字符的字符串数组.对我来说,这个棘手的部分是确保正则表达式找到40个字符之前的最后一个空格,以便在字符串之间进行干净的中断,因为我不希望单词被切掉.
我正在使用.NET 2.0我有一个很大的字符串数组.我想检查数组中是否存在特定字符串,我不确定,是否优化了以下代码或者我需要对其进行更优化.请指导.
string []test_arr= new string[]{"key1","key2","key3"};
Boolean testCondition = (new List<string>(test_arr)).Contains("key3");
Run Code Online (Sandbox Code Playgroud)
我也想了解更多
是否有任何好的参考或书籍,有人已经参考,然后帮助我!
Dim project = new Project(1)
Dim tasks = Task.GetTasks()
Return <?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/project">
<Name><%= project.name %></Name>
<Tasks>
<%= tasks.Select(Function(t) _
<Task>
<ID><%= tasks.IndexOf(t) + 1 %></ID>
</Task> _
) %>
</Tasks>
</Project>
Run Code Online (Sandbox Code Playgroud)
我试图tasks.IndexOf(t) + 1用一些更简单的东西来取代.这有什么内置功能吗?
Hrmm xml文字在这里似乎没有很好的翻译....
我怎么处理<asp:ObjectDataSource>?我的意思是,没有代码,在aspx文件中有这样的:
<asp:ObjectDataSource ID="CategoryDataSource" runat="server"
SelectMethod="GetCategoriesFilter"
TypeName="BLL.CategoryBLL">
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
BLL.CategoryBll类实现IDisposable.我必须处理它吗?
我是新来的...
我有一个问题,如果有人可以帮助我.
它是关于计时器(System.Threading.Timer).
我想打破不可避免的递归:我在datarow中有两列,它们是相互依赖的(price_without_VAT和price_with_VAT).设置其中一个肯定会导致StackOverflowException.所以这就是这个想法:
bool flag = true;
void Reset(object state) { flag = true; }
Run Code Online (Sandbox Code Playgroud)
现在,包装用于更改其中一列的值的方法:
{
if(flag)
{
flag = false;
System.Threading.Timer tmr = new System.Threading.Timer(new System.Threading.TimerCallback(Reset), null, 10, System.Threading.Timeout.Infinite);
datarow.other_column = value;
}
}
Run Code Online (Sandbox Code Playgroud)
datarow.other_column.value行将立即触发上述方法,但不会有递归,因为flag为false.在10毫秒标志应该回到真,一切都恢复正常.
现在,当我按照DEBUGGER中的代码进行操作时,一切正常,但是当我启动应用程序NORMALLY重置功能根本不会触发,标志永远停留在虚假状态,并且一切都是假的.我玩弄due_time参数但似乎没有任何帮助.
有任何想法吗?
c# ×8
asp.net ×2
string ×2
vb.net ×2
.net ×1
arrays ×1
attributes ×1
collections ×1
generics ×1
global-asax ×1
idisposable ×1
interface ×1
parsing ×1
regex ×1
timer ×1
winforms ×1