显然,人们可以创建一个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中创建跟踪消息.
System.Diagnostics.Trace的静态方法:
Trace.WriteLine("Something happened");
Run Code Online (Sandbox Code Playgroud)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.Trace的MSDN页面,但没有找到答案.
请考虑以下代码示例:
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.Nested和SubOuter.Nested完全等同?
澄清:当然它是编译的,因为C#规范是这样说的.我明白那个.我在问为什么 C#是这样设计的,因为它似乎没有为语言增加一些东西.如果您有一个相反的例子,即使用此功能更容易/更短/更好的一些代码,请在答案中分享它,我很乐意接受它.
如果我用来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?还有别的事吗?
我们(小团队)目前在网络驱动器上没有我们的Visual Studio项目(没有版本控制).我希望我们开始使用版本控制,所以我想我会安装Subversion并将所有项目放入svn存储库.
现在的问题是:我们应该把工作副本放在哪里?
理想情况下,我希望有两个优点,但我想这是不可能的(至少没有重新制定我们的备份策略来包含工作站).或者有可能吗?或者是否有任何其他观点支持或反对选项A和B?
我有一个抽象的基类T,从中继承类A和B继承.我现在(的操作T),这需要一个稍微不同的实现A和B,但大部分的代码是一样的.让我举个例子:有两种.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) 我正在屏幕底部制作一个表单,我希望它向上滑动,所以我编写了以下代码:
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 - 任何想法?
我正在查看 MSDN 文档,它说
异步方法有三种可能的返回类型:
Task<TResult>,Task,和void。
https://msdn.microsoft.com/en-us/library/mt674893.aspx
但是,我记得在其他地方读到可以写入await自定义等待者。我如何调和这两个事实?
这是一个最小的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未提交文件的输出,我得到了与虚假换行相同的问题.)
我想在方法中注销一些INFO日志记录,我不想使用反射来获取类和方法名称.
对于错误日志记录,我可以从异常中获取堆栈但是如何在没有异常的情况下执行此操作以关闭StackTrace?
.net ×7
c# ×6
async-await ×1
asynchronous ×1
inheritance ×1
loops ×1
nested-class ×1
oop ×1
powershell ×1
svn ×1
trace ×1
vb.net ×1
winforms ×1
xml ×1