我正在尝试制作一个简单的程序来测试Visual Studio 2012中新的.NET异步功能.我通常使用BackgroundWorkers来异步运行耗时的代码,但有时候看起来像是一个相对简单(但很昂贵)操作的麻烦.新的异步修改器看起来很好用,但不幸的是我似乎无法进行简单的测试.
这是我在C#控制台应用程序中的代码:
static void Main(string[] args)
{
string MarsResponse = await QueryRover();
Console.WriteLine("Waiting for response from Mars...");
Console.WriteLine(MarsResponse);
Console.Read();
}
public static async Task<string> QueryRover()
{
await Task.Delay(5000);
return "Doin' good!";
}
Run Code Online (Sandbox Code Playgroud)
我在MSDN上查看了一些示例,它看起来像我的代码应该正常工作,但我在包含"await QueryRover();"的行上遇到了构建错误.我疯了还是发生了什么?
我们在一台机器上安装了一个Apache Web服务器,该机器也使用Perl提供页面.
对于一个项目,我决定使用Node.js而不是Perl/Ruby.只是想知道是否可以使用Apache作为我的网络服务器(因此它服务于页面)并使用Node.js动态创建网页(这是我正在创建的网络应用程序)?
换句话说,它们可以像Apache/Perl或Apache/PHP等一样携手合作.
.Net库中的许多方法都是在本机代码中实现的.那些来自框架本身的标记着[MethodImpl(MethodImplOptions.InternalCall)]
.来自某些非托管DLL的那些标记有[DllImport]
(例如[DllImport("kernel32.dll")]
).到目前为止没有什
但在为另一个问题写答案时,我发现有许多标记的方法[DllImport("QCall")]
.它们似乎是.Net的内部实现(例如GC._Collect()
).
我的问题是:究竟是什么[DllImport("QCall")]
意思?[DllImport("QCall")]
和之间有什么区别[MethodImpl(MethodImplOptions.InternalCall)]
?
今天我发现了一件有趣的事情.我不知道在goto标签之后无法声明变量.
编译以下代码
#include <stdio.h>
int main() {
int x = 5;
goto JUMP;
printf("x is : %d\n",x);
JUMP:
int a = 0; <=== giving me all sorts of error..
printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)
给出错误
temp.c: In function ‘main’:
temp.c:7: error: expected expression before ‘int’
temp.c:8: error: ‘a’ undeclared (first use in this function)
temp.c:8: error: (Each undeclared identifier is reported only once
temp.c:8: error: for each function it appears in.)
Run Code Online (Sandbox Code Playgroud)
那背后的逻辑是什么?我听说无法在switch的case语句中创建变量.由于JUMP是goto语句的同一范围(主要功能的范围,在我的情况)里面,我相信,范围是不是一个问题在这里.但是,为什么我会收到此错误?
我有点困惑 - 我读过的大多数.NET Core教程都没有提到"dotnet new sln" - 它们总是单独创建项目,没有解决方案文件将它们链接在一起.
是"dotnet new sln"新命令?
我什么时候应该用这个?我从创建sln文件而不是仅仅拥有项目文件中获得了哪些好处?它主要用于在Visual Studio中打开吗?我使用Visual Studio代码用于mac,因此可能不适用.
我用google搜索"dotnet new sln",结果很少.
我正在构建一个自定义购物车,其中CC号和Exp日期将存储在数据库中,直到处理(然后删除).我需要加密这些数据(显然).
我想使用RSACryptoServiceProvider类.
这是我创建密钥的代码.
public static void AssignNewKey(){
const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "KeyContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
rsa = new RSACryptoServiceProvider(cspParams);
string publicPrivateKeyXML = rsa.ToXmlString(true);
string publicOnlyKeyXML = rsa.ToXmlString(false);
// do stuff with keys...
}
Run Code Online (Sandbox Code Playgroud)
现在计划将私钥xml存储在连接到管理器密钥链的USB驱动器上.
每当经理离开公司时,我希望能够生成新的公钥和私钥(并使用新的公钥重新加密所有当前存储的CC号).
我的问题是这段代码生成的密钥总是一样的.我每次如何生成一组独特的密钥?
UPDATE.我的测试代码如下:
注意:这里的"privatekey"参数是原始私钥.为了更改密钥,我需要验证私钥是否有效.
在Default.aspx.cs中
public void DownloadNewPrivateKey_Click(object sender, EventArgs e)
{
StreamReader reader = new StreamReader(fileUpload.FileContent);
string privateKey = reader.ReadToEnd();
Response.Clear();
Response.ContentType = "text/xml"; …
Run Code Online (Sandbox Code Playgroud) 如何List<T>
在方法上使用a 作为参数,我尝试这种语法:
void Export(List<T> data, params string[] parameters){
}
Run Code Online (Sandbox Code Playgroud)
我有编译错误:
找不到类型或命名空间名称"T"(您是否缺少using指令或程序集引用?)
这个让我难过,我有一个强类型的视图,有这个循环生成radiobuttons:
<% foreach (QuestionAnswer qa in Model.QuestionAnswers)
{ %>
<%= Html.RadioButtonFor(model => model.QuestionAnswers[(int)qa.QuestionID - 1].AnswerValue, "Checked" ) %>
<%= Html.Encode(qa.OptionValue) %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
它渲染得很好,但由于名称不一样,你可以选择1个以上的radiobutton.如何对它们进行分组,这样才能选择1个单选按钮?
任何帮助,将不胜感激!
我在Windows 8 Release Preview上安装了Visual Studio 2012 RC,我的问题是有没有与Metro无关的任何有用的新功能,或者Metro是分离.Net 4和.Net 4.5?
我试图在.NET 4.5中掌握异步方法语法.我以为我已经明白了究竟例子然而无论异步方法的类型是什么(即Task<T>
),我总是得到相同类型的错误错误的转换回T
-我明白这是相当多的自动.以下代码生成错误:
无法隐式将类型'
System.Threading.Tasks.Task<System.Collections.Generic.List<int>>
' 转换为'System.Collections.Generic.List<int>
'
public List<int> TestGetMethod()
{
return GetIdList(); // compiler error on this line
}
async Task<List<int>> GetIdList()
{
using (HttpClient proxy = new HttpClient())
{
string response = await proxy.GetStringAsync("www.test.com");
List<int> idList = JsonConvert.DeserializeObject<List<int>>();
return idList;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我显式地转换结果,它也会失败.这个:
public List<int> TestGetMethod()
{
return (List<int>)GetIdList(); // compiler error on this line
}
Run Code Online (Sandbox Code Playgroud)
有点可以预见会导致此错误:
无法将类型'
System.Threading.Tasks.Task<System.Collections.Generic.List<int>>
' 转换为'System.Collections.Generic.List<int>
'
任何帮助非常感谢.
c# ×6
.net ×3
.net-4.5 ×2
async-await ×2
.net-core ×1
apache ×1
asp.net ×1
asp.net-4.5 ×1
asp.net-core ×1
build ×1
c ×1
c#-3.0 ×1
c#-5.0 ×1
cryptography ×1
dllimport ×1
encryption ×1
generics ×1
goto ×1
internals ×1
javascript ×1
key ×1
node.js ×1
rsa ×1
webserver ×1