小编Jud*_*red的帖子

从相对路径导入模块

如何根据相对路径导入Python模块?

例如,如果dirFoo包含Foo.pydirBar,和dirBar包含Bar.py,我怎么导入Bar.pyFoo.py

这是一个直观的表示:

dirFoo\
    Foo.py
    dirBar\
        Bar.py
Run Code Online (Sandbox Code Playgroud)

Foo希望包括Bar,但重组文件夹层次结构不是一种选择.

python relative-path python-import

749
推荐指数
16
解决办法
88万
查看次数

运算符使用C#扩展方法重载

我正在尝试使用扩展方法向C#StringBuilder类添加一个operater重载.具体来说,给定StringBuilder sb,我想sb += "text"成为等同于sb.Append("text").

以下是为以下内容创建扩展方法的语法StringBuilder:

public static class sbExtensions
{
    public static StringBuilder blah(this StringBuilder sb)
    {
        return sb;
    }
} 
Run Code Online (Sandbox Code Playgroud)

它成功地将blah扩展方法添加到了StringBuilder.

不幸的是,运算符重载似乎不起作用:

public static class sbExtensions
{
    public static StringBuilder operator +(this StringBuilder sb, string s)
    {
        return sb.Append(s);
    }
} 
Run Code Online (Sandbox Code Playgroud)

除其他问题外,this在此上下文中不允许使用关键字.

是否可以通过扩展方法添加运算符重载?如果是这样,那么正确的方法是什么?

c# extension-methods operator-overloading

167
推荐指数
3
解决办法
4万
查看次数

如何聚焦外窗?

我有一个应用程序,一次只能打开一个自己的实例.为了强制执行此操作,我使用以下代码:

        System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
        System.Diagnostics.Process me = System.Diagnostics.Process.GetCurrentProcess();
        foreach (System.Diagnostics.Process p in myProcesses)
        {
            if (p.ProcessName == me.ProcessName)
                if (p.Id != me.Id)
                {
                    //if already running, abort this copy.
                    return;
                }
        }
        //launch the application.
        //...
Run Code Online (Sandbox Code Playgroud)

它工作正常.我还希望它能够集中已经运行的副本的形式.也就是说,在返回之前,我想将此应用程序的其他实例置于前台.

我怎么做?

Re:SetForeGroundWindow:

SetForeGroundWindow工作,到一点:

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    public static extern bool SetForegroundWindow(IntPtr hWnd); 

    //...
                if (p.Id != me.Id)
                {
                    //if already running, focus it, and then abort this copy.
                    SetForegroundWindow(p.MainWindowHandle);
                    return;
                }
    //...
Run Code Online (Sandbox Code Playgroud)

如果窗口没有最小化,这会将窗口置于前台.真棒.但是,如果窗口IS最小化,它将保持最小化.

它需要取消最小化.

通过SwitchToThisWindow解决方案(Works!):

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab); …
Run Code Online (Sandbox Code Playgroud)

.net c# focus

16
推荐指数
3
解决办法
2万
查看次数

是否有一个VB等同于C#的'continue'和'break'语句?

为了论证,我怎么能在VB中这样做?

foreach foo in bar
{
   if (foo == null)
       break;

   if (foo = "sample")
       continue;

   // More code
   //...
}
Run Code Online (Sandbox Code Playgroud)

vb.net statements

9
推荐指数
2
解决办法
7713
查看次数

常量值如何影响Joins的ON子句?

我最近发现LEFT JOIN的ON子句可能包含诸如(1 = 1)之类的值.

这令我很沮丧,因为它打破了我对连接功能的看法.

我遇到了以下情况的更精细版本:

SELECT DISTINCT Person.ID, ...
FROM Person LEFT JOIN Manager 
ON (Manager.ID = Person.ID OR Manager.ID = -1))
WHERE (...)
Run Code Online (Sandbox Code Playgroud)

这完全合法.如果有的话,"Manager.ID = -1"会完成什么?这怎么会影响加入?

sql join on-clause

7
推荐指数
3
解决办法
1万
查看次数

单引号和双引号html属性之间的功能差异是什么?

让我们来sEncodedHref代表一个HttpUtility.HtmlAttributeEncode(..)'d字符串.

生成的html之间是否有任何功能差异,如下所示:

String.Format(@"<span class='blue' src='{0}'>", sEncodedHref);
Run Code Online (Sandbox Code Playgroud)

与生成的HTML这样:

String.Format(@"<span class=""blue"" src=""{0}"">", sEncodedHref);
Run Code Online (Sandbox Code Playgroud)

我一直认为单引号变体既不受支持也不太"安全",但我无法提供支持该论点的理由.

html c#

4
推荐指数
1
解决办法
1943
查看次数