我有2个私有consts和一个公共方法:
private const byte _minAge = 24;
private const byte _maxAge = 29;
public bool IsInAgeRange() { ... }
Run Code Online (Sandbox Code Playgroud)
我正在添加XML文档,如果我的代码的用户可以在IntelliSense中读取它,我希望它是最好的: Checks whether the age is within the allowed range (between 24 and 29).
我的问题是:有没有办法将我的consts渲染到我的XML文档中?
我提出的替代方案是:
<see cref="MinAge">
和<see cref="MaxAge">
(减少封装并使文档信息量减少)我是.NET用户,我的目标就像找到主执行程序集(EXE文件)目录的绝对路径一样简单.
我有几个候选人:
Assembly.GetExecutingAssembly().CodeBase
Assembly.GetExecutingAssembly().Location
AppDomain.CurrentDomain.BaseDirectory
如果要通过.NET文档判断 - 我倾向于CodeBase
.任何人都可以用比.NET文档更具体的术语来解释这三个问题吗?一个例子来证明这种差异?
一个异步问题:
我一直在互联网上阅读很多文章支持和反对Delegate.EndInvoke()是可选的.这些文章大多数是4-5岁.很多死链接.
任何人都可以在.NET 2.0中解释 - EndInvoke()确实可以防止其他不可避免的内存泄漏,如果是,请指出导致此泄漏的原因是什么?
在同一主题上:如果EndInvoke()确实是必须的 - 我找到了使用运行EndInvoke()的回调方法实现Fire-and-forget机制的最佳方法.我很想听到其他人的反应.
谢谢,哦
我有一个字符串格式,其中包括两个整数变量,每个变量都需要格式化为可变长度:
int x = 1234;
int y = 42;
// Simplified, real values come from method outputs, so must use the variables:
int xFormatDigitCount = 7;
int yFormatDigitCount = 3;
var xStringFormat = new string('0', xFormatDigitCount); // "0000000"
var yStringFormat = new string('0' ,yFormatDigitCount); // "000"
Run Code Online (Sandbox Code Playgroud)
现在我只能使用整数变量的.ToString()
方法获得所需的格式:
var xString = x.ToString(xStringFormat);
var yString = y.ToString(yStringFormat);
return $"{xString}-{yString}";
Run Code Online (Sandbox Code Playgroud)
但这似乎是一种开销,因为字符串插值支持格式{var:format}.有没有办法让我的字符串只用字符串插值,而不使用x和y ToString()
?
我的公司从TFVC切换到TFS Git。我正在迁移发布自动化工具以支持该开关。
除其他外,该工具为该版本创建一个新分支,以及一个新标签(Git中的“标签”)。对于TFVC,这些操作直接在TFS服务器上执行,并且不需要存储库的本地副本。在Git中仍然可以实现这一点,还是我不得不为这些操作在本地克隆存储库?
到目前为止,我看过的两个库是Microsoft.TeamFoundation.Git.Client,它似乎是TFS Git REST API的官方包装,以及LibGit2Sharp。我不仅限于这些库,因此也欢迎使用另一种选择。
我们还在从TFS 2015升级到TFS 2017的过程中,因此,如果存在仅针对我也想知道的问题之一的答案。
编辑1
明确地说,“直接在远程存储库上”是指没有经过本地存储库。该工具是完全自动化的,如果可能的话,我宁愿不需要文件系统访问。
编辑2
如下面 @rmcsharry所述,现在可以直接在远程服务器上创建标签。这是一个很好的改进,但是当然主要的目标是首先直接在远程上创建分支,这在Web UI中绝对是可能的,只是还没有通过API。这是Web UI屏幕截图:
没有那部分,我将无法通过本地文件系统来实现我提到的过程,这是我的目标。
我完全知道为什么 as
不能用于值类型.但是,我所知道的唯一替代品是:
if (!(obj is MyValueType)) { // Type check #1
// Exception or whatnot
}
var myValueType = (MyValueType)obj; // Type check #2
Run Code Online (Sandbox Code Playgroud)
但是,此代码执行两次类型检查,这会产生性能成本,as
而引用类型的成本相同.
我的问题:对于值类型,是否有更好的性能机制/语法?
我能想到的唯一单一类型检查机制是try/catch
,但这当然具有自己的性能成本,我尽量避免基于异常的编程.