MSDN 文档包含有关隐式转换的部分:
var s = $"hello, {name}";
System.IFormattable s = $"Hello, {name}";
System.FormattableString s = $"Hello, {name}";
Run Code Online (Sandbox Code Playgroud)
从第一个字符串开始,原始类型的插值字符串就是string
.好的,我可以理解它,但是......我意识到字符串没有实现IFormattable
.所以它看起来像编译器的一些魔法类似于它对lambdas的作用.
现在猜猜这段代码的输出:
void Main()
{
PrintMe("Hello World");
PrintMe($"{ "Hello World"}");
}
void PrintMe(object message)
{
Console.WriteLine("I am a " + message.GetType().FullName);
}
//void PrintMe(string message)
//{
// Console.WriteLine("I am a string " + message.GetType().FullName);
//}
void PrintMe(IFormattable message)
{
Console.WriteLine("I am a " + message.GetType().FullName);
}
Run Code Online (Sandbox Code Playgroud)
暗示:
我是System.String
我是System.Runtime.CompilerServices.FormattableStringFactory + ConcreteFormattableString
如果您从第二种方法中删除评论,您将获得:
我是一个字符串System.String
我是一个字符串System.String
好的
我可能不太了解重载分辨率,但是C#规范的 14.4.2 …
我是Lambdas的新手所以也许还有一些我还没有抓到的东西,但是我已经编写了一个简单的Lambda函数来向外部网站发出HTTP请求.出于某种原因,无论我使用Node http
还是https
模块,我都会得到一个ECONNREFUSED
.
这是我的Lambda:
var http = require('http');
exports.handler = function (event, context) {
http.get('www.google.com', function (result) {
console.log('Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
Run Code Online (Sandbox Code Playgroud)
这是日志输出:
START RequestId: request hash
2015-08-04T14:57:56.744Z request hash Error, with: connect ECONNREFUSED
2015-08-04T14:57:56.744Z request hash {"errorMessage":"Failed"}
END RequestId: request hash
Run Code Online (Sandbox Code Playgroud)
是否需要执行HTTP请求的角色权限?Lambda甚至允许普通的旧HTTP请求吗?我需要设置特殊标头吗?
任何指导表示赞赏.
在下图中,"MyCars"是一个集合.如果对象的属性是集合,则在PropertyGrid中,如果选择了该项,则该值将显示为字符串"(Collection)",并带有右侧的按钮.
是否可以更改"(收集)"值?如果是这样,怎么样? 我问的原因是因为我已经为我的程序中的PropertyGrid中出现的对象实现了一个自定义UITypeEditor.到目前为止,右侧的按钮出现,但文本值与属性的显示名称相同.我想在那里出现一个不同的字符串.
编辑:对于什么是值得的,我知道我可以覆盖PaintValue
从UITypeEditor的方法,并提供一个图标,我最终可能会,如果我解决不了这个问题,这样做,但我还是想知道是否以及如何"(集合)"文本可以更改.
我正在开发一个C#.NET应用程序,它在大型数据集上使用一些相当复杂的科学公式(平均1000万个数据点).我正在做的部分工作需要尽可能优化配方实施.
我注意到一个公式实现使用goto,这让我想知道:是否比其他流控制结构慢?
如何获得当前显示器的屏幕分辨率? "当前监视器",我指的是应用程序启动的那个.
我问这个的原因是因为我有两台显示器,二级显示器是1280x1024,主显示器是1680x1050.应用程序启动时,根据主监视器分辨率愚蠢地设置自己的高度和宽度.当应用程序在辅助监视器上启动时,它会溢出分辨率,这看起来很奇怪.
我知道我可以更改/删除设置应用程序高度/宽度的代码,但我也很好奇如何确定应用程序显示的监视器.
对于它的价值,我不是设置自己的高度/宽度的应用程序的支持者.
我正在编写一个小的Python脚本来清理HTML文档.其工作原理是接受的标签列表保持,然后通过HTML代码解析捣毁不在我使用正则表达式做了列表的标签,我已经能够匹配打开标签和自闭的标签但不是关闭标签.
我一直在尝试匹配结束标签的模式是</(?!a)>
.这对我来说似乎合乎逻辑,为什么不工作呢?本(?!a)
应匹配任何不是一个锚定标记(不是"一"是可以anything--这只是一个例子).
编辑:AGG!我想正则表达式没有显示!
我正在开发一个小型Web应用程序,它可以更改选择下拉列表的内容.
我想知道appendChild()和add()是否在JavaScript中的select DOM对象上完成相同的任务?
var someSelect = document.getElementById('select-list');
var newOption = document.createElement('option');
someSelect.appendChild(newOption);
// The above is the same as the following?
someSelect.add(newOption);
Run Code Online (Sandbox Code Playgroud) 是否可以在ZedGraph中删除图形边缘上的顶部和右侧主要和次要刻度线,同时保留底部和左侧刻度线?
我正在开发一个使用大量X,Y空间信息的应用程序.
给定两个并行数组,一个表示X值,另一个表示Y值,有没有办法从两个数组中选择一个子集? 通过使用x值阵列中的起始和停止值来确定子集.
这是两个并行数组的示例.
double[] xs = new double[] {
0.0, 0.04, 0.08, 0.12, 0.16,
0.2, 0.24, 0.28, 0.32, 0.36,
0.4, 0.44, 0.48, 0.52, 0.56,
0.6, 0.64, 0.68, 0.72, 0.76,
0.8, 0.84, 0.88, 0.92
};
double[] ys = new double[] {
0.0152, 0.1434, 0.1647, 0.3800,
0.7880, 0.0488, 1.0060, 0.2710,
0.0363, 0.4321, 0.5573, 0.2192,
0.6341, 0.5181, 0.9546, 0.8275,
0.5567, 0.9870, 0.8895, 0.3423,
0.6061, 0.1507, 0.7841, 0.6512
};
Run Code Online (Sandbox Code Playgroud)
假设我想要x值和y值的子集,其中x大于或等于0.1且小于或等于0.2.这样一个子集的结果应该是两个并行数组:
double[] x_subset = new double[] {
0.12, 0.16, 0.2
};
double[] y_subset …
Run Code Online (Sandbox Code Playgroud) c# ×6
winforms ×3
aws-lambda ×1
dom ×1
goto ×1
html ×1
javascript ×1
linq ×1
node.js ×1
object ×1
overloading ×1
propertygrid ×1
python ×1
regex ×1
select ×1
string ×1
zedgraph ×1