小编Hei*_*nzi的帖子

在哪里做...循环没有条件记录?

显然,人们可以创建一个Do ... Loop没有条件的-Loop.以下代码使用.NET 4.5(小提琴)以及Roslyn(小提琴)编译:

Public Sub Main()
    Do
        Console.WriteLine("Hello World")
        Exit Do
    Loop
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,文档页面上的语法仅提供以下两个选项:

Do { While | Until } condition
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
-or-
Do
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition
Run Code Online (Sandbox Code Playgroud)

这是编译器中的错误,文档中的错误还是我看起来不够努力?

.net vb.net specifications

5
推荐指数
1
解决办法
133
查看次数

System.Diagnostics.Trace.WriteLine使用哪个跟踪源?

据我所知,有两种方法可以在.NET中创建跟踪消息.

  1. System.Diagnostics.Trace的静态方法:

    Trace.WriteLine("Something happened");
    
    Run Code Online (Sandbox Code Playgroud)
  2. System.Diagnostics.TraceSource的实例方法:

    var ts = new TraceSource("TraceTest");
    ts.TraceInformation("Something happened");
    
    Run Code Online (Sandbox Code Playgroud)

在我的app.config文件中,我可以为所有内容添加跟踪侦听器:

<system.diagnostics>
    <trace>
        <listeners>
            ...
        </listeners>
    </trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

或者对于一个特定的跟踪源:

<system.diagnostics>
    <sources>
        <source name="...">
            <listeners>
                ...
            </listeners>
        </source>
    </sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

我的问题

如果我使用第一种方法(System.Diagnostics.Trace的静态方法),使用哪个跟踪源名称?

我已经检查了System.Diagnostics.TraceMSDN页面,但没有找到答案.

.net c# trace system.diagnostics

5
推荐指数
1
解决办法
813
查看次数

为什么嵌套类"继承"?

请考虑以下代码示例:

class Outer
{
    public class Nested { }
}

class SubOuter : Outer { }

class Test
{
    Test()
    {
        Outer.Nested x;     // Makes sense.
        SubOuter.Nested y;  // Compiles, but why?
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎嵌套类是由子类"继承"的.那是什么意思?如果我不能(或不能轻易)做到这个功能,我该怎么办?是不是Outer.NestedSubOuter.Nested完全等同?

澄清:当然它是编译的,因为C#规范是这样说的.我明白那个.我在问为什么 C#是这样设计的,因为它似乎没有为语言增加一些东西.如果您有一个相反的例子,即使用此功能更容易/更短/更好的一些代码,请在答案中分享它,我很乐意接受它.

.net c# inheritance nested-class

5
推荐指数
1
解决办法
258
查看次数

XDocument.Load 采用什么默认编码?

如果我用来XDocument.Load解析 XML 文件...

var x = XDocument.Load("somefile.xml");
Run Code Online (Sandbox Code Playgroud)

...没有标题<?xml version="1.0" encoding="..."?>...

<MyRootElement>
   ...
</MyRootElement>
Run Code Online (Sandbox Code Playgroud)

...假定的默认编码是什么XDocument.Load?ANSI(即系统默认的旧语言环境)?UTF-8?还有别的事吗?

我已经检查过文档,但那里没有记录。我也看过参考源,但在深入了解XmlReader源后放弃了。

.net c# xml base-class-library

5
推荐指数
1
解决办法
3280
查看次数

Visual Studio + svn:在网络驱动器或本地工作副本?

我们(小团队)目前在网络驱动器上没有我们的Visual Studio项目(没有版本控制).我希望我们开始使用版本控制,所以我想我会安装Subversion并将所有项目放入svn存储库.

现在的问题是:我们应该把工作副本放在哪里?

  • 选项A:在本地硬盘上.优势:编译速度很快.
  • 选项B:服务器上的网络共享(每个用户一个目录).优点:所有工作副本都将包含在每日备份中.

理想情况下,我希望有两个优点,但我想这是不可能的(至少没有重新制定我们的备份策略来包含工作站).或者有可能吗?或者是否有任何其他观点支持或反对选项A和B?

svn visual-studio

4
推荐指数
2
解决办法
479
查看次数

OO模式:抽象基类和子类之间的共享工作

我有一个抽象的基类T,从中继承类AB继承.我现在(的操作T),这需要一个稍微不同的实现AB,但大部分的代码是一样的.让我举个例子:有两种.Clone方法可以实现类似方法:

Public MustInherit Class T
    Protected MustInherit Function _DoClone() As T

    Public Function Clone() As T
        Dim clone = Me._DoClone()    ' do the subclass-specific stuff '
        ... ' do the shared stuff '
    End Function
End Class

Public Class A
    Inherits T

    Protected Overrides Function _DoClone() As T
        ... ' do the subclass-specific stuff '
    End Function
End Class
Run Code Online (Sandbox Code Playgroud)

要么

Public MustInherit Class T
    Protected Sub …
Run Code Online (Sandbox Code Playgroud)

.net language-agnostic oop

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

以Winforms形式滑动

我正在屏幕底部制作一个表单,我希望它向上滑动,所以我编写了以下代码:

int destinationX = (Screen.PrimaryScreen.WorkingArea.Width / 2) - (this.Width / 2);
int destinationY = Screen.PrimaryScreen.WorkingArea.Height - this.Height;

this.Location = new Point(destinationX, destinationY + this.Height);

while (this.Location != new Point(destinationX, destinationY))
{
    this.Location = new Point(destinationX, this.Location.Y - 1);
    System.Threading.Thread.Sleep(100);
}
Run Code Online (Sandbox Code Playgroud)

但代码只是贯穿并显示结束位置而没有显示形式滑动,这就是我想要的.我尝试过Refresh,DoEvents - 任何想法?

c# loops winforms

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

如果可以编写我们自己的可等待对象,那么为什么异步方法只能返回 Task&lt;T&gt;、Task 和 void?

我正在查看 MSDN 文档,它说

异步方法有三种可能的返回类型:Task<TResult>Task,和void

https://msdn.microsoft.com/en-us/library/mt674893.aspx

但是,我记得在其他地方读到可以写入await自定义等待者。我如何调和这两个事实?

.net c# asynchronous async-await

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

为什么Select-String会添加空行?

这是一个最小的repro示例.

预期结果:

PS C:\> ("a", "b")
a
b
PS C:\> ("a", "b") | Select-String "b"
b
PS C:\>
Run Code Online (Sandbox Code Playgroud)

实际结果:

PS C:\> ("a", "b")
a
b
PS C:\> ("a", "b") | Select-String "b"

b


PS C:\>
Run Code Online (Sandbox Code Playgroud)

如您所见,第二个输出前面有一个空行,匹配行后面有两个空行.

为什么会这样?我能做些什么呢?

(注意:这是一个最小的例子.在我的实际代码中,我正在解析svn status未提交文件的输出,我得到了与虚假换行相同的问题.)

powershell

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

无异常地获取当前方法和类,并且不在C#中使用反射

我想在方法中注销一些INFO日志记录,我不想使用反射来获取类和方法名称.

对于错误日志记录,我可以从异常中获取堆栈但是如何在没有异常的情况下执行此操作以关闭StackTrace?

.net c#

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