在C#解决方案中,我添加了一个现有项目.
之后,Visual Studio在其他.csproj文件中添加了以下条目:
<ItemGroup>
<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这是用来干嘛的?
我可以删除它吗?
我正在使用这个正则表达式:
((?:[a-z][a-z]+))_(\d+)_((?:[a-z][a-z]+)\d+)_(\d{13})
Run Code Online (Sandbox Code Playgroud)
匹配这样的字符串:
SH_6208069141055_BC000388_20110412101855
Run Code Online (Sandbox Code Playgroud)
分为4组:
SH
6208069141055
BC000388
20110412101855
Run Code Online (Sandbox Code Playgroud)
问题:如何使第一组可选,以便生成的组是空字符串?
在可能的情况下,我想在每种情况下获得4组.
这种情况的输入字符串:(第一组后没有下划线)
6208069141055_BC000388_20110412101855
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Interlocked.CompareExchange这个枚举:
public enum State {
Idle,
Running,
//...
}
Run Code Online (Sandbox Code Playgroud)
以下代码无法编译,但这就是我想要做的:
if (Interlocked.CompareExchange(ref state, State.Running, State.Idle) != State.Idle) {
throw new InvalidOperationException("Unable to run - not idle");
}
Run Code Online (Sandbox Code Playgroud)
当然我可以使用int而不是枚举并使用属性:
private int state = (int)State.Idle;
public State { get { return (State)state; } }
Run Code Online (Sandbox Code Playgroud)
然后将枚举转换为int:
if (Interlocked.CompareExchange(ref state, (int)State.Running, (int)State.Idle) != (int)State.Idle) {
throw new InvalidOperationException("Unable to run - not idle");
}
Run Code Online (Sandbox Code Playgroud)
但有没有更好的方法来做到这一点?
经过一些研究,我发现名称的长度限制为255,值为32767个字符.
但是哪些字符可以用于名称?
哪些字符允许值?
windows invalid-characters environment-variables special-characters
当使用ASCII编码并将字符串编码为字节时,ö会产生类似的字符?.
Encoding encoding = Encoding.GetEncoding("us-ascii"); // or Encoding encoding = Encoding.ASCI;
data = encoding.GetBytes(s);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来替换不同的字符,而不仅仅是一个问号.
例子:
ä -> ae
ö -> oe
ü -> ue
ß -> ss
Run Code Online (Sandbox Code Playgroud)
如果不能用一个字符替换一个字符,我会接受,如果我甚至可以用一个字符替换它们(ö- > o)
现在有几个实现EncoderFallback,但我不明白它们是如何工作的.
一个快速而肮脏的解决方案是在给出字符串之前替换所有这些字符Encoding.GetBytes(),但这似乎不是"正确"的方式.
我希望我能给出编码对象的替换表.
我怎么能做到这一点?
15年前,在使用Pascal进行编程时,我理解为什么要使用2的幂来进行内存分配.但这似乎仍然是最先进的.
C#示例:
new StringBuilder(256);
new byte[1024];
int bufferSize = 1 << 12;
Run Code Online (Sandbox Code Playgroud)
我仍然看到这几千次,我自己用这个,我还在质疑:
我们是否需要现代编程语言和现代硬件?
我猜它是好习惯,但是原因是什么?
编辑
例如一个byte[]数组,如答案所述,2的幂是没有意义的:数组本身将使用16个字节(?),因此使用240(= 256-16)的大小是有意义的总共256个字节?
尝试解析CommonDocuments目录时出现了一些奇怪的错误.使用Windows资源管理器(属性 - >上下文菜单中的路径)将CommonDocuments目录重定向/移动到新位置后,它会一直解析到错误的目录.
最小的工作代码是:
namespace CommonDocumentsTest
{
class Program
{
private static readonly Guid CommonDocumentsGuid = new Guid("ED4824AF-DCE4-45A8-81E2-FC7965083634");
[Flags]
public enum KnownFolderFlag : uint
{
None = 0x0,
CREATE = 0x8000,
DONT_VERFIY = 0x4000,
DONT_UNEXPAND= 0x2000,
NO_ALIAS = 0x1000,
INIT = 0x800,
DEFAULT_PATH = 0x400,
NOT_PARENT_RELATIVE = 0x200,
SIMPLE_IDLIST = 0x100,
ALIAS_ONLY = 0x80000000
}
[DllImport("shell32.dll")]
static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out IntPtr pszPath);
static void Main(string[] args)
{
KnownFolderFlag[] flags …Run Code Online (Sandbox Code Playgroud) C#中是否有方法从给定的会话ID中检索用户名?
(在系统上运行的任何会话)
Win API函数WTSQuerySessionInformation执行此操作,但我在C#中搜索此函数.
Windows中的特殊文件夹是否有明确的指南?互联网搜索产生了一些信息,例如
我正在寻找的是每个文件夹的解释,它的预期目的,使用场景和存在的动机(例如,本地应用程序设置为该应用程序设置提供的不是).我认为,对文件夹的需求/使用矩阵/表格会很方便.
我用a Dictionary<string, Item>来存储自己的物品.
使用字典的原因是密钥是唯一的,访问速度很快.
在大多数情况下,我只使用dicionary来访问单个项目.但在一个案例中,我必须遍历字典 - 在这里我需要按顺序添加项目.
我只知道字典在内部使用哈希表,但我不知道它是如何组织的.
问题:
字典中的项目是否已添加?
添加或删除项目时,订单会发生什么变化?