keep()和peek()有什么区别?
MSDN说:
marks the specified key in the dictionary for retention.
returns an object that contains the element that is
associated with the specified key, without marking the key for
deletion.
我无法得到真正的不同之处,难道他们都没有为另一个请求保留价值吗?
假设我有三个C源文件.前两个是LIB(lib*.a?),第三个是使用它们的应用程序.
第一个是(re.c):
int re(int i) {
return i;
}
Run Code Online (Sandbox Code Playgroud)
第二个是(test.c):
int re(int); // Depends on re.c
int test(int i) {
return re(i);
}
Run Code Online (Sandbox Code Playgroud)
第三个是(main.c):
#include<stdio.h>
int test(int); // Uses test.c
int main(void) {
printf("%d\n",test(0));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何以这样的方式创建前两个LIB,以便稍后将它们与主应用程序静态链接?
我知道如何创建DLL并在我的应用程序中动态链接它们,例如:
cc -o re.dll re.c -shared -Wl, - out-implib = libre.a(for re.c)
cc -o test.dll test.c -L.-lre -shared -Wl, - out-implib = libtest.a(对于test.c)
cc -o main.exe main.c -L.-lre -ltest
那么如何在MinGW中创建可执行二进制文件中静态链接的等效LIB,以及如何链接它们?
显然,在Windows下:)
我正在 .NET Core 中编写一个应用程序,该应用程序依赖于使用[DllImport]
. 我有适用于 win-x64、win-x86 和 linux-x64 的本地编译库工件。
我的项目结构是这样的:
MyApp
|--Main.cs
|--runtimes
|--win-x86
|--native
|--somelibrary.dll
|--win-x64
|--native
|--somelibrary.dll
|--linux-x64
|--native
|--libsomelibrary.so
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我得到了 DLL not found 异常。
我曾尝试在此处使用 MSBuild 目标解决方案,但这仅dll
在编译时将一个复制到主输出文件夹。但是,我希望输出以与上面的 runtimes 文件夹相同的结构在输出文件夹中包含所有三个本机库,并将兼容本机库的选择留给 .NET Core 运行时主机。
因此,如果用户在 Windows x86 中运行该应用程序,它将使用 win-x86,依此类推。
我注意到,当我从 NuGet引用像SkiaSharp这样的原生包装器时,它实际上会很好地集成到我的应用程序中,并将包含运行时文件夹结构中的所有资产,以便在运行时在多个环境中工作。我怎样才能做到这一点?
编辑:
我最终为本地库绑定创建了一个 nuget 包,并在我的其他项目中引用了 nuget。
我得到了这个文件说这里有一个关闭:
function addHandler(){
document.getElementById('el').onclick = function(){
this.style.backgroundColor = 'red';
};
}
Run Code Online (Sandbox Code Playgroud)
虽然此代码删除了闭包:
function addHandler() {
var clickHandler = function() {
this.style.backgroundColor = 'red';
};
(function() {
var el = document.getElementById('el');
el.onclick = clickHandler;
})();
}
Run Code Online (Sandbox Code Playgroud)
我看不出第二个如何解决关闭问题.为什么代码不会el.onclick = clickHandler
创建一个闭包?clickHandler
的this
必须与满足el
.
我正在做一些实验,然后我遇到了这个问题.我坐在一个div
高度1em
,我期望div包含文本的整个高度,但它没有.1em
是我的浏览器16px
.
当我没有指定div
高度时,它成功地包含了文本的整个高度,并且在检查时,它变成了高度19px
.
是我对em
错误的理解,因为我认为它应该代表浏览器的默认字体高度.
div {
margin: 0;
padding: 0;
}
.first {
height: 1em;
background: green;
}
.second {
background: orange;
}
Run Code Online (Sandbox Code Playgroud)
<div class="first">سلامًا Say I Wantأًّ</div>
<br />
<div class="second">سلامًا Say I Wantأًّ</div>
Run Code Online (Sandbox Code Playgroud)
我在.c文件中有这个结构:
struct entry {
int position;
int length;
struct entry *node;
};
Run Code Online (Sandbox Code Playgroud)
现在,我如何将此结构布局的范围限制为主机文件,以便在另一个文件中使用相同名称的新结构布局时,我不会收到"重新定义"错误?
我尝试在struct之前使用static,但似乎没用(我也没有意义).顺便说一下,这个问题对我来说似乎没有用,因为我在链接文件中复制stuct条目时会遇到"重新定义"错误(使用MinGW).
我正在为某个软件创建一个类图.现在,我确定了重要的类并将它们联系起来,它们很好.
问题是我有两个不同的类与另一个相同的类关联,但具有不同的访问级别.例如,我正在Admin
和Clerk
班级相关的Video
班级.在Clerk
将只能查看,同时Admin
可以查看和编辑.我可以在类图中显示这种区别吗?
使用StartAndExpand
orEndAndExpand
似乎实际上并没有扩展里面的元素StackLayout
。即使有更多可用空间,如蓝色区域所示。只有FillAndExpand
有效。
这是代码:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
xmlns:local="clr-namespace:App6"
x:Class="App6.MainPage"
ios:Page.UseSafeArea="True">
<StackLayout BackgroundColor="Blue"
HeightRequest="100"
Orientation="Horizontal"
Spacing="0"
VerticalOptions="Start">
<Label BackgroundColor="Red"
HorizontalOptions="Start"
Text="Hi" />
<StackLayout BackgroundColor="Salmon"
HorizontalOptions="EndAndExpand"
Orientation="Vertical">
<BoxView BackgroundColor="Red"
HeightRequest="30"
HorizontalOptions="End"
VerticalOptions="Center"
WidthRequest="30" />
</StackLayout>
</StackLayout>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
最重要的结果是当FillAndExpand
用于 child 时StackLayout
,其次是EndAndExpand
which 不扩展,最后是StartAndExpand
, which 也不会扩展。
如果父元素有更多空间,不应该扩展元素吗?如果是的话,为什么那么StartAndExpand
和EndAndExpand
不工作?
注意:这仅在 Android 上使用 Xamarin.Forms 版本 3.4.0.1008975 进行了测试。
有两个项目,一个是面向 .NET Standard 2.0 的库,另一个是面向 .NET Core 2.2 的控制台应用程序。
现在这段代码适用于 .NET Standard 2.0 库,但不适用于 .NET Core 2.2。
for (int i = 0; i < 1; i++) {
var y = new int[1].First(i => i == 0); // Conflict i name error here in .NET Core 2.2.
Console.WriteLine("Hello " + y);
}
Run Code Online (Sandbox Code Playgroud)
我从这个问题中了解到,简单的名称不应具有不同的含义,因此,即使 .NET Standard 2.0 库也应该给出错误,但事实并非如此。为什么会出现这种不一致?
我尝试过 dotnet fiddle,它似乎适用于 .NET Core 3.1 和 Roslyn 3.4,但不适用于 .NET Framework 4.7.2,这更令人困惑。这里发生了什么?
.Net Core 3.1(通过)https://dotnetfiddle.net/Cc1hmk
Roslyn 3.4(通过)https://dotnetfiddle.net/megBiw
.NET Framework 4.7.2(编译错误) …
今天我遇到了这个博客.最吸引我的是这个:
int i;
i["]<i;++i){--i;}"];
Run Code Online (Sandbox Code Playgroud)
好吧,我真的不知道数组下标中奇怪的"字符串常量"的目的是什么,但我很困惑如何下标整数变量.所以我带来了这段代码:
#include <stdio.h>
int main(void) {
int x = 10;
printf("%d", x["\0"]); /* What is x["\0"]?! */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它使用MinGW和-Wall -ansi -pedantic编译时没有错误.然后该代码输出:105.
谁能解释这个?
编辑:我发现下标中必须有一个指针,否则我会得到编译时错误.