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可以查看和编辑.我可以在类图中显示这种区别吗?
使用StartAndExpandorEndAndExpand似乎实际上并没有扩展里面的元素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,其次是EndAndExpandwhich 不扩展,最后是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.
谁能解释这个?
编辑:我发现下标中必须有一个指针,否则我会得到编译时错误.