我决定更改一个我正在使用的工具来使用标签页.当我尝试将各种控件从表单拖到表单顶部的标签页时,它会创建控件的副本,为其指定不同的名称.只需在选项卡顶部重新创建表单或者只是编辑设计器中的源代码就可以将所有内容添加到选项卡中(这就是我所做的,哪个有效),但似乎可能有可能通过gui做一个更好的方法.
所以,我有一个内部有数组的类.目前,我对类的项目进行枚举的策略是使用代码foreach (item x in classInstance.InsideArray).我更愿意使用foreach (item x in classInstance)并使数组私有化.我主要担心的是我真的需要避免任何缓慢的事情; 阵列受到很多打击(并且有几百个项目).枚举这个数组是很便宜的.一种想法只是拥有类实现IEnumerable<item>,但InsideArray.getEnumerator()只给我一个非泛型的枚举器.我也尝试过实现IEnumerable界面.这工作但很慢,可能是由于拳击.
有没有办法让这个类本身可以在没有性能损失的情况下进行枚举?
正常代码:
//Class
public class Foo {
//Stuff
public Item[,] InsideArray {get; private set;}
}
//Iteration. Shows up all over the place
foreach (Item x in classInstance.InsideArray)
{
//doStuff
}
Run Code Online (Sandbox Code Playgroud)
调整后,代码慢得多:
//Class
public class Foo : IEnumerable {
//Stuff
private Item[,] InsideArray;
System.Collections.IEnumerator System.Collections.IEnumerable GetEnumerator()
{
return InsideArray.GetEnumerator();
}
}
//Iteration. Shows up all over the place
foreach (Item x …Run Code Online (Sandbox Code Playgroud) 我注意到了这个问题,但我的问题更加具体.
使用是否有任何好处
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand command = new SqlCommand())
{
// dostuff
}
}
Run Code Online (Sandbox Code Playgroud)
代替
using (SqlConnection conn = new SqlConnection(conStr))
{
SqlCommand command = new SqlCommand();
// dostuff
}
Run Code Online (Sandbox Code Playgroud)
显然,如果您计划使用相同的连接运行多个命令,这很重要,因为关闭a SqlDataReader比关闭并重新打开连接更有效(调用conn.Close();conn.Open();也会释放连接).
我看到许多人坚持认为未能关闭SqlDataReader手段会留下开放的连接资源,但这不仅适用于您不关闭连接的情况吗?
下面是一个相当可怕的模式,我有时会用它来做一个简单的调用.这段代码让我感到有点内疚,即使我不确定为什么.这可怕吗?合理?以后会在我脸上炸掉?
public void myMethod(object args)
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(delegate
{
myMethod(args);
}));
return;
}
//Do Stuff
}
Run Code Online (Sandbox Code Playgroud) 注意:我对使用解析库不感兴趣.这是我自己的娱乐.
我一直在尝试从PDF文件中翻录文本以获取搜索小发明,但我无法从某些pdf文件中提取文本.
请注意,这比直接解析更容易解决问题; 我不在乎我是否无意中在输出中包含了一些垃圾,我也不在乎文件的格式是否完整.我甚至不在乎这些话是否按顺序出现.
作为第一步,我使用此项目中的策略创建了一个非常简单的pdf解析器.基本上,它所做的只是搜索zlib流的pdf文件,缩小它们,并拉出它在括号中找到的任何文本.这无法解析卡在<< >>块内部的数据,但我的理解是这是针对十六进制编码的数据blob,这似乎不在我无法解析的测试文件中......或者至少我不知道看不到他们.
同样,虽然PDFMiner和PDFBox成功,但iText.Net也失败了.然而,后两个项目有太多的间接层,很容易检查; 我很难弄清楚他们到底在做什么,部分原因是因为我并没有真正使用任何一种语言来习惯于以任何重要的方式调试它.
我的目标是创建一个文本ripper从pdf文件中抓取文本,尽可能不了解pdf格式本身(例如我的测试解析器从括号中抓取文本,但不知道它正在检查的pdf的哪个部分是标题).
<%if (CanRemove) Response.Write("<b>"+ProductName+"</b>"); %>
Run Code Online (Sandbox Code Playgroud)
这段代码让我觉得很难看.更具体地说,每当我在ascx或aspx文件中看到对Response.Write的调用时,我都会怀疑我做错了什么.也许这是因为之前使用XSLT并注意到正确完成后,很少需要<xsl:text>元素来生成html.当我的html代码隐藏在<% %>块中时,我觉得它干扰了我读取代码的能力.
这是我需要习惯使用Asp.Net还是有更好的方法来做到这一点?
[DebuggerDisplayAttribute("{_name}")]
Run Code Online (Sandbox Code Playgroud)
VS
[DebuggerDisplay("{_name}")]
Run Code Online (Sandbox Code Playgroud)
有区别吗?一个是别人的别名吗?当使用名为foo的属性时,VS是否自动检查名为fooAttribute的类?
我在C#.NET中编程.我想创建一个嵌套类,可以访问创建它的实例的成员,但我似乎无法弄清楚如何.
这就是我想要做的:
Car x = new Car()
x.color = "red";
x.Door frontDoor = new x.Door();
MessageBox.Show(frontDoor.GetColor()); // So I want the method GetColor of the class Front Door to be able to access the color field/property of the Car instance that created it.
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我尝试将Door类嵌套在Car类中,但是它不能以这种方式访问Car类的成员.我是否需要让汽车继承门类或其他东西?
对于需要关键字参数'required_arg'的Python方法,最好的样式是什么:
def test_method(required_arg, *args, **kwargs):
def test_method(*args, **kwargs):
required_arg = kwargs.pop('required_arg')
if kwargs:
raise ValueError('Unexpected keyword arguments: %s' % kwargs)
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?我希望将来可以将它用于我的所有方法,所以我正在寻找在Python方法中处理所需关键字参数的最佳实践方法.
我想看到label6显示用户选择号码的正确次数.而label7显示用户选择错误的次数.它不会增加一个.
错误1运算符'++'不能应用于'string'类型的操作数错误2运算符'++'不能应用于'string'类型的操作数
private void button1_Click(object sender, EventArgs e)
{
string correct="0";
string incorrect="0";
RandomNumber(0,99);
button2.Enabled = true ;
button1.Enabled = false;
label3.Visible = true;
if (textBox1.Text == label1.Text)
label3.Text=("Winner");
label6.Text = correct +1;
if (textBox1.Text != label1.Text)
label7.Text = incorrect= +1;
label3.Text=(string.Format("Sorry - You Lose, The number is {0}", label1.Text));
}
Run Code Online (Sandbox Code Playgroud)
编辑(从OP回答他自己的问题):
我已经尝试了你的建议方式,但每次我猜错了数字都不会增加一个.
private void button1_Click(object sender, EventArgs e)
{
int correct=0;
int incorrect=0;
RandomNumber(0,99);
button2.Enabled = true ;
button1.Enabled = false;
label3.Visible = true;
if (textBox1.Text == label1.Text) …Run Code Online (Sandbox Code Playgroud) c# ×6
winforms ×2
.net ×1
abstract ×1
arrays ×1
asp.net ×1
attributes ×1
class ×1
dispose ×1
ienumerable ×1
inheritance ×1
invoke ×1
nested ×1
parsing ×1
pdf ×1
performance ×1
python ×1
sql ×1