小编tse*_*mer的帖子

将常量渲染到XML文档中?

我有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文档中?


我提出的替代方案是:

  1. 只需在文档中写入24和29(缺少对实际值的依赖)
  2. 使consts公开并添加<see cref="MinAge"><see cref="MaxAge">(减少封装并使文档信息量减少)

c# xml-documentation visual-studio

28
推荐指数
3
解决办法
3633
查看次数

使用Assembly vs AppDomain查找我的主要可执行文件的路径

我是.NET用户,我的目标就像找到主执行程序集(EXE文件)目录的绝对路径一样简单.

我有几个候选人:

  • Assembly.GetExecutingAssembly().CodeBase
  • Assembly.GetExecutingAssembly().Location
  • AppDomain.CurrentDomain.BaseDirectory

如果要通过.NET文档判断 - 我倾向于CodeBase.任何人都可以用比.NET文档更具体的术语来解释这三个问题吗?一个例子来证明这种差异?

.net directory exe path

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

EndInvoke() - 可选或不可选?

一个异步问题:

我一直在互联网上阅读很多文章支持和反对Delegate.EndInvoke()是可选的.这些文章大多数是4-5岁.很多死链接.

任何人都可以在.NET 2.0中解释 - EndInvoke()确实可以防止其他不可避免的内存泄漏,如果是,请指出导致此泄漏的原因是什么?

在同一主题上:如果EndInvoke()确实是必须的 - 我找到了使用运行EndInvoke()的回调方法实现Fire-and-forget机制的最佳方法.我很想听到其他人的反应.

谢谢,哦

.net delegates memory-leaks asynchronous

5
推荐指数
2
解决办法
783
查看次数

使用字符串插值内的变量指定小数位

我有一个字符串格式,其中包括两个整数变量,每个变量都需要格式化为可变长度:

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()

c# string-interpolation c#-6.0

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

TFS Git-直接在远程存储库上创建分支和标记

我的公司从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屏幕截图:

在此处输入图片说明

没有那部分,我将无法通过本地文件系统来实现我提到的过程,这是我的目标。

git tfs branch tfs-2015 tfs2017

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

是否有价值类型的'as'替代品?

我完全知道为什么 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,但这当然具有自己的性能成本,我尽量避免基于异常的编程.

c# casting value-type

-1
推荐指数
1
解决办法
122
查看次数