小编Mat*_*ley的帖子

如何在Python中打破多个循环?

给出以下代码(不起作用):

while True:
    #snip: print out current state
    while True:
        ok = get_input("Is this ok? (y/n)")
        if ok.lower() == "y": break 2 #this doesn't work :(
        if ok.lower() == "n": break
    #do more processing with menus and stuff
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作?或者我是否已经做了一次检查以突破输入循环,然后另一个更有限的检查外部循环以在用户满意的情况下将所有内容分开?

Edit-FYI: get_input是我编写的一个简短函数,支持显示提示和默认值以及所有那些幻想和返回__CODE__

python break control-flow

440
推荐指数
15
解决办法
35万
查看次数

切换声明在C#中落后?

切换声明是我喜爱switchif/else if构造的个人主要原因之一.这里有一个例子:

static string NumberToWords(int number)
{
    string[] numbers = new string[] 
        { "", "one", "two", "three", "four", "five", 
          "six", "seven", "eight", "nine" };
    string[] tens = new string[] 
        { "", "", "twenty", "thirty", "forty", "fifty", 
          "sixty", "seventy", "eighty", "ninety" };
    string[] teens = new string[]
        { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
          "sixteen", "seventeen", "eighteen", "nineteen" };

    string ans = "";
    switch (number.ToString().Length)
    {
        case 3:
            ans += string.Format("{0} hundred and ", numbers[number / 100]); …
Run Code Online (Sandbox Code Playgroud)

c# switch-statement

356
推荐指数
7
解决办法
18万
查看次数

C#中typedef的等价物

在C#中是否有typedef等价物,或者某种类似的行为?我做了一些谷歌搜索,但我看到的每个地方似乎都是负面的.目前我的情况类似于以下情况:

class GenericClass<T> 
{
    public event EventHandler<EventData> MyEvent;
    public class EventData : EventArgs { /* snip */ }
    // ... snip
}
Run Code Online (Sandbox Code Playgroud)

现在,当试图为该事件实现处理程序时,并不需要火箭科学家弄清楚这会很快导致大量输入(为可怕的双关语道歉).它最终会像这样:

GenericClass<int> gcInt = new GenericClass<int>;
gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent);
// ...

private void gcInt_MyEvent(object sender, GenericClass<int>.EventData e)
{
    throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

除了在我的情况下,我已经使用了复杂类型,而不仅仅是一个int.如果有可能简化这一点,那就太好了......

编辑:即.也许键入定义EventHandler而不是需要重新定义它以获得类似的行为.

c# typedef

308
推荐指数
10
解决办法
19万
查看次数

C#中的数组切片

你怎么做呢?给定一个字节数组:

byte[] foo = new byte[4096];
Run Code Online (Sandbox Code Playgroud)

如何将数组的前x个字节作为单独的数组?(具体来说,我需要它作为一个IEnumerable<byte>)

这是为了与Sockets合作.我认为最简单的方法是数组切片,类似于Perls语法:

@bar = @foo[0..40];
Run Code Online (Sandbox Code Playgroud)

这会将前41个元素返回到@bar数组中.C#中有些东西我只是缺少,还是还有其他一些我应该做的事情?

LINQ对我来说是一个选项(.NET 3.5),如果这有帮助的话.

c# arrays

214
推荐指数
15
解决办法
23万
查看次数

如何在.NET中创建和使用资源

如何轻松创建可以在程序的各个部分引用和使用的资源?

我的具体问题是我有一个NotifyIcon,我想根据程序的状态更改图标.一个常见的问题,但我长期以来一直在苦苦挣扎.

c# resources icons visual-studio

180
推荐指数
3
解决办法
24万
查看次数

如何将接口用作C#泛型类型约束?

有没有办法获得以下函数声明?

public bool Foo<T>() where T : interface;
Run Code Online (Sandbox Code Playgroud)

即.其中T是接口类型(类似于where T : class,和struct).

目前我已经满足于:

public bool Foo<T>() where T : IBase;
Run Code Online (Sandbox Code Playgroud)

其中IBase被定义为一个空接口,由我的所有自定义接口继承...不理想,但它应该工作...为什么你不能定义泛型类型必须是一个接口?

对于它的价值,我想要这个,因为Foo它正在做需要接口类型的反射......我可以将它作为普通参数传递并在函数本身中进行必要的检查,但这看起来更加类型安全(而且我假设性能更高一些,因为所有检查都是在编译时完成的).

c# generics interface constraints

155
推荐指数
7
解决办法
11万
查看次数

PHP的死亡白屏

现在我开始回到PHP,我开始记得为什么我放弃了它.目前我盘子里最烦人的事情就是我所说的"PHP的死亡白屏".当PHP由于语法或其他原因而出现致命错误时,似乎总是在没有实际向浏览器发送任何内容的情况下死亡.我已将以下内容添加到我的中.htaccess,并且它似乎在大多数时间都有效,但在这些情况下它不起作用.

php_value display_errors 1
php_value display_startup_errors 1
php_value error_reporting 2147483647 # E_ALL
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?目前我觉得我需要刷新我编写的每几行代码,以免我犯了一个错误,并且必须搜索许多页面,试图找出我犯的一个小错误......

编辑:例如,给出以下两行代码:

$foo = array(':language' => $languageId;
$foo = array(':language' => $languageId);
Run Code Online (Sandbox Code Playgroud)

第一个将显示死亡的白色屏幕(即,什么都没有打印到浏览器),而第二个将愉快地执行.

php error-handling error-reporting wsod

130
推荐指数
0
解决办法
14万
查看次数

如何在C#中重置计时器?

有三个Timer,我知道的课程,System.Threading.Timer,System.Timers.Timer,和System.Windows.Forms.Timer,但这些都没有一个.Reset()这将当前经过时间重置为0功能.

有没有这个功能的BCL类?这样做有非破解方法吗?(我想也许改变它的时间限制可能会重置它)考虑重新实现Timer具有此功能的类有多难,或者如何使用其中一个BCL类可靠地执行它?

c# timer

108
推荐指数
5
解决办法
16万
查看次数

STAThread和多线程

来自有关STAThread的MSDN文章:

表示应用程序的COM线程模型是单线程单元(STA).

(作为参考,这是整篇文章.)

单线程公寓......好吧,我的头脑.另外,我在某处读到,除非你的应用程序使用COM互操作,否则这个属性实际上什么都不做.那究竟它究竟做了什么,以及它如何影响多线程应用程序?多线程应用程序(包括使用Timers到异步方法调用的任何人,而不仅仅是线程池等)都应该使用MTAThread,即使它"只是为了安全"?STAThread和MTAThread实际上做了什么?

.net c# multithreading sta

102
推荐指数
1
解决办法
8万
查看次数

如何强制MySQL将0作为有效的自动增量值

简而言之,我有一个SQL文件,我想将其作为skel样式文件导入,因此这将以编程方式重复完成.我可以编辑我想要的SQL文件,但我宁愿不要触摸应用程序本身.

此应用程序用于userid = 0表示匿名用户.它还在数据库中有一个相关(空白)条目来表示此"用户".因此,我的行skel.sql看起来像这样:

INSERT INTO `{{TABLE_PREFIX}}users` VALUES (0, '', '', '', 0, 0, 0, '', '', 0, 0, 0, 0, 0, NULL, '', '', '', NULL);
Run Code Online (Sandbox Code Playgroud)

这个问题是,这uid是一个auto_increment字段,从技术上讲,它0是一个无效的值.或者至少,如果你把它设置为0,你基本上告诉MySQL,"请将下一个id插入到这个字段中."

现在,我想我可以在我的SQL文件中添加INSERT一个UPDATE查询,但有没有办法告诉MySQL一般是的,我实际上想插入0这个字段?

mysql auto-increment

73
推荐指数
4
解决办法
6万
查看次数