假设我的字典需要由ItemId和RegionId的组合键入,两者都是int.并且说值侧的类型是"数据".我可以通过以下两种方式做到这一点:
方式1:多级字典,如下所示:
Dictionary<int, Dictionary<int, Data>> myData;
Run Code Online (Sandbox Code Playgroud)
所以查找可以像这样编码:
Data data1 = myData[itemId][regionId];
Run Code Online (Sandbox Code Playgroud)
不错,但缺点是我需要在第一级检查密钥存在,因此代码更安全
Data data1 = null;
if (myData.ContainsKey(itemId)) data1 = myData[itemId][regionId];
Run Code Online (Sandbox Code Playgroud)
方式2:使用多部分密钥.在这种方法中,我将创建一个表示部件的结构,并使用结构作为字典键:
private struct MultiPartKey
{
public int ItemId;
public int RegionId;
}
Dictionary<MultiPartKey, Data> myData;
Run Code Online (Sandbox Code Playgroud)
并且查找将是:
MultiPartKey mpk;
mpk.ItemId = itemId;
mpk.RegionId = regionId;
Data data1 = myData[mpk];
Run Code Online (Sandbox Code Playgroud)
这里可能的缺点是它只有在我的struct完全由简单值类型组成时才有效,因此两个实例的按位比较将是相等的.(对?)
你怎么看?
在Windows 10.我这样做:
pip install autopep8
Run Code Online (Sandbox Code Playgroud)
在我有的vscode用户设置中
"python.linting.pep8Enabled": true,
"python.formatting.provider": "autopep8",
Run Code Online (Sandbox Code Playgroud)
当我运行格式文档,或从命令pallette显式调用autopep8时,错误是:
Error: Command failed: autopep8 c:\tca-backend\lambdas\utilities\NetMenuAPIUtil.py
'autopep8' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
显然,vsc想调用autopep8.exe,但没有exe.只是py.所以我创建了一个autopep8.bat,它在我从命令行进行测试时有效,但是当从vsc运行时,它会将批处理文件的内容插入到文档的顶部.(是的,这听起来很奇怪.)
所有其他与Python相关的操作都可以正常工作,包括ESLint扩展.
我不了解Kendo模板的基本知识,所以也许有人可以向我解释一下.网格中单元格的模板示例来自Telerik示例代码.
template:"<input type='checkbox' #= IsAdmin ? checked='checked':'' # />
Run Code Online (Sandbox Code Playgroud)
最终,这会生成一个输入标记,如果IsAdmin的值为true,则包含"checked ='checked'"
我不明白评估的背景
#= IsAdmin ? checked = 'checked' : '' #
Run Code Online (Sandbox Code Playgroud)
文档说"#="表示"渲染为文字"(无论这意味着什么),我理解"IsAdmin"是评估/执行模板时提供的值.
#=后面的内容看起来像Javascript,但如果只是那样,它只会将名为"checked"的变量的值设置为"checked"或空字符串.
是个 ?这里的运算符真的是javascript,还是剑道模板语言?我没有看到过与运营商特定的Kendo特定语言.但如果这真的是一个Javascript?运算符,它是如何工作的,我们得到一个文字"checked ='checked',而不是设置一个名为"checked"的var,值为'checked'.
叫我困惑.
Windows 上使用 LoggerFactory 的 .net 6 控制台应用程序 - 最终消息不会出现在控制台上。loggerFactory.Dispose() 没有帮助。Ilogger 没有 Dispose() 方法。
这是一个复制品。大约会出现 20 到 70 条循环消息。之后就什么都没有了。
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("MyTestApp.Program", LogLevel.Debug)
.AddConsole();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
try
{
logger.LogInformation("Starting");
for (var i=0; i < 100; i++)
{
logger.LogInformation($"This is a nice long message for {i}.");
}
throw new Exception("boom");
}
catch (Exception e)
{
logger.LogInformation(e.ToString());
}
finally
{
loggerFactory.Dispose();
}
Run Code Online (Sandbox Code Playgroud) 我用它来隐藏许可证对话
<WixVariable Id="WixStdbaLicenseUrl" Value=""/
Run Code Online (Sandbox Code Playgroud)
哪个有效,直到我介绍一个自定义主题使用
<WixVariable Id="WixStdbaThemeXml" Value="Resource\RtfTheme.xml" />
<WixVariable Id="WixStdbaThemeWxl" Value="Resource\RtfTheme.wxl" />
Run Code Online (Sandbox Code Playgroud)
我的主题只是内置RtfTheme的一个副本,经过微调.我改变了窗口大小,并删除了修复按钮.
当我这样做时,会显示许可证对话框(尽管文本为空).我希望对话保持隐藏.
为什么?怎么修?
这是我尝试过的几种变体之一:
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" >
<bal:WixStandardBootstrapperApplication
LicenseFile="..\..\Tools\Building\buildIncludes\LicenseAgreement-Memo.rtf"
LogoFile="..\..\Tools\Building\buildIncludes\my.logo.png"
SuppressOptionsUI="yes"
/>
</BootstrapperApplicationRef>
<!-- supress license display in boot strapper -->
<WixVariable Id="WixStdbaLicenseUrl" Value=""/>
<WixVariable Id="WixStdbaLicenseFile" Value=""/>
<!-- we are using a customized theme -->
<WixVariable Id="WixStdbaThemeXml" Value="Resource\RtfTheme.xml" />
<WixVariable Id="WixStdbaThemeWxl" Value="Resource\RtfTheme.wxl" />
Run Code Online (Sandbox Code Playgroud) .net ×2
.net-core ×1
burn ×1
c# ×1
dictionary ×1
flush ×1
javascript ×1
kendo-grid ×1
kendo-ui ×1
key ×1
logging ×1
powershell ×1
regex ×1
telerik ×1
templates ×1
wix ×1